<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello,<br>
</p>
<div class="moz-cite-prefix">On 18.04.21 22:56, beer Ll wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAL1qiZDdMGBT-7uzbUG919Skt-PQDBXAbdqoz2nZe4WtVjeemg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Hi ,</div>
<div><br>
</div>
<div>I have a server test with <br>
</div>
<div><br>
</div>
<div>Debian Buster 10.9</div>
<div>kamailio 5.4.5 </div>
<div>kamcli 2.0.0 (similar result with 3.0.0)<br>
</div>
<div><br>
</div>
<div>I'm not able to use kamcli <br>
</div>
<div>with sqlite : insert and select doesn't work <br>
</div>
<div>with pgsql : insert works , select of empty table works ,
select table with entry doesn't work<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>TEST WITH SQLITE</div>
<div>root@kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.sqlite
subscriber add test password<br>
Traceback (most recent call last):<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1706, in _execute_context<br>
cursor, statement, parameters, context<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py",
line 716, in do_execute<br>
cursor.execute(statement, parameters)<br>
sqlite3.OperationalError: near "%": syntax error<br>
<br>
The above exception was the direct cause of the following
exception:<br>
<br>
Traceback (most recent call last):<br>
File "/usr/bin/kamcli", line 11, in <module><br>
load_entry_point('kamcli==2.0.0', 'console_scripts',
'kamcli')()<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 829, in __call__<br>
return self.main(*args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 782, in main<br>
rv = self.invoke(ctx)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1066, in invoke<br>
return ctx.invoke(self.callback, **ctx.params)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/local/lib/python3.7/dist-packages/click/decorators.py",
line 73, in new_func<br>
return ctx.invoke(f, obj, *args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
line 43, in subscriber_add<br>
e.execute('insert into subscriber (username, domain,
password, ha1, ha1b) values (%s, %s, %s, %s, %s)',
udata['username'], udata['domain'], password, ha1, ha1b)<br>
File "<string>", line 2, in execute<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/deprecations.py",
line 390, in warned<br>
return fn(*args, **kwargs)<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 3037, in execute<br>
return connection.execute(statement, *multiparams,
**params)<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1190, in execute<br>
future=False,<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1491, in _exec_driver_sql<br>
distilled_parameters,<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1749, in _execute_context<br>
e, statement, parameters, cursor, context<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1930, in _handle_dbapi_exception<br>
sqlalchemy_exception, with_traceback=exc_info[2], from_=e<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py",
line 211, in raise_<br>
raise exception<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
line 1706, in _execute_context<br>
cursor, statement, parameters, context<br>
File
"/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py",
line 716, in do_execute<br>
cursor.execute(statement, parameters)<br>
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError)
near "%": syntax error<br>
[SQL: insert into subscriber (username, domain, password, ha1,
ha1b) values (%s, %s, %s, %s, %s)]<br>
[parameters: ('test', '<a href="http://sip.test.dev"
moz-do-not-send="true">sip.test.dev</a>', 'password',
'4380ea9069e888b5fc92996495a0f481',
'3a36aeb0df7f4504cc5d9b97dab540e5')]<br>
(Background on this error at: <a
href="http://sqlalche.me/e/14/e3q8" moz-do-not-send="true">http://sqlalche.me/e/14/e3q8</a>)</div>
<div><br>
</div>
<div>root@kamailio-BT:~# kamctl add test password<br>
-e sqlite_query: /usr/bin/sqlite3 /etc/kamailio/kamailio.db
insert into subscriber (username, domain,ha1,ha1b,password)
values ('test','<a href="http://sip.test.dev"
moz-do-not-send="true">sip.test.dev</a>','4380ea9069e888b5fc92996495a0f481','3a36aeb0df7f4504cc5d9b97dab540e5','password');<br>
-e new user 'test' added</div>
<div><br>
</div>
<div>root@kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.sqlite
subscriber show<br>
Traceback (most recent call last):<br>
File "/usr/bin/kamcli", line 11, in <module><br>
load_entry_point('kamcli==2.0.0', 'console_scripts',
'kamcli')()<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 829, in __call__<br>
return self.main(*args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 782, in main<br>
rv = self.invoke(ctx)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1066, in invoke<br>
return ctx.invoke(self.callback, **ctx.params)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/local/lib/python3.7/dist-packages/click/decorators.py",
line 73, in new_func<br>
return ctx.invoke(f, obj, *args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
line 118, in subscriber_show<br>
ioutils_dbres_print(ctx, oformat, ostyle, res)<br>
File "/usr/lib/python3/dist-packages/kamcli/ioutils.py",
line 45, in ioutils_dbres_print<br>
gstring = tabulate(allrows, headers=res.keys(),
tablefmt=ostyle)<br>
File "/usr/local/lib/python3.7/dist-packages/tabulate.py",
line 1529, in tabulate<br>
tabular_data, headers, showindex=showindex<br>
File "/usr/local/lib/python3.7/dist-packages/tabulate.py",
line 1162, in _normalize_tabular_data<br>
"headers for a list of dicts is not a dict or a keyword"<br>
ValueError: headers for a list of dicts is not a dict or a
keyword<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>TEST WITH PGSQL</div>
<div>root@kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql
subscriber show<br>
+------+------------+----------+------------+-------+--------+<br>
| id | username | domain | password | ha1 | ha1b |<br>
+======+============+==========+============+=======+========+<br>
+------+------------+----------+------------+-------+--------+<br>
root@kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql
subscriber add test password<br>
root@kamailio-BT:~# kamcli -c /etc/kamcli/kamcli.ini.pgsql
subscriber show<br>
Traceback (most recent call last):<br>
File "/usr/bin/kamcli", line 11, in <module><br>
load_entry_point('kamcli==2.0.0', 'console_scripts',
'kamcli')()<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 829, in __call__<br>
return self.main(*args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 782, in main<br>
rv = self.invoke(ctx)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1259, in invoke<br>
return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 1066, in invoke<br>
return ctx.invoke(self.callback, **ctx.params)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/local/lib/python3.7/dist-packages/click/decorators.py",
line 73, in new_func<br>
return ctx.invoke(f, obj, *args, **kwargs)<br>
File "/usr/local/lib/python3.7/dist-packages/click/core.py",
line 610, in invoke<br>
return callback(*args, **kwargs)<br>
File
"/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
line 118, in subscriber_show<br>
ioutils_dbres_print(ctx, oformat, ostyle, res)<br>
File "/usr/lib/python3/dist-packages/kamcli/ioutils.py",
line 45, in ioutils_dbres_print<br>
gstring = tabulate(allrows, headers=res.keys(),
tablefmt=ostyle)<br>
File "/usr/local/lib/python3.7/dist-packages/tabulate.py",
line 1529, in tabulate<br>
tabular_data, headers, showindex=showindex<br>
File "/usr/local/lib/python3.7/dist-packages/tabulate.py",
line 1162, in _normalize_tabular_data<br>
"headers for a list of dicts is not a dict or a keyword"<br>
ValueError: headers for a list of dicts is not a dict or a
keyword</div>
<div><br>
</div>
<div>root@kamailio-BT:~# kamctl show test<br>
1|test|<a href="http://sip.test.dev" moz-do-not-send="true">sip.test.dev</a>|password|4380ea9069e888b5fc92996495a0f481|3a36aeb0df7f4504cc5d9b97dab540e5<br>
</div>
</div>
</blockquote>
<p>thanks for reporting!</p>
<p>I could reproduce the sqlite problems, they seemed to be related
to the sql driver for sqlalchemy that was not supporting variadic
number of parameters to the sql query execution function. I
replaced with string formatting and now seems to work. Try with
latest git version and report back if there are still issues.</p>
<p>The one for postgres I couldn't reproduce, but it was after a
commit related to output style default value. Although it didn't
seem related, it worked what I tried for postgres. Again, test now
with latest git version and if there is still a problem, provide
updated traces.</p>
<p>Cheers,<br>
Daniel<br>
</p>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a>
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - Online
May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
* <a class="moz-txt-link-freetext" href="https://www.asipto.com/sw/kamailio-advanced-training-online/">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
</body>
</html>