<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello,</p>
<p>I pushed a commit to fix it, seems to work with both tabulate
0.8.5 and 0.8.9. Try with latest git repo version.<br>
</p>
<p>I haven't tested with older versions of Python than 3.7, though.</p>
<p>Cheers,<br>
Daniel<br>
</p>
<div class="moz-cite-prefix">On 22.04.21 10:50, Daniel-Constantin
Mierla wrote:<br>
</div>
<blockquote type="cite"
cite="mid:de66d4bf-b18b-edf2-6280-ea36c13d3de4@gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>Hello,</p>
<p>it seems to be problem with tabulate 0.8.9 - I upgraded to it
and I can reproduce. With tabulate 0.8.5 worked fine. I will
look into it.</p>
<p>Cheers,<br>
Daniel<br>
</p>
<div class="moz-cite-prefix">On 22.04.21 10:25, beer Ll wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAL1qiZBsc9vbPoYK6eJ5jAcWiTcRdyUzvSGjoZtBY5VvjUZmdg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<div dir="ltr">
<div>Hi</div>
<div><br>
</div>
<div>my kamcli.ini is</div>
<div><br>
</div>
<div>(venv) kamailio-BT:/usr/src/kamclienv # cat
kamcli.ini.sqlite<br>
</div>
<div>### main options</div>
[main]<br>
; SIP domain to be used when an AoR has no domain<br>
domain=<a href="http://sip.test.dev" moz-do-not-send="true">sip.test.dev</a><br>
<br>
<br>
### database connectivity - URLs are used for SQL Alchemy<br>
[db]<br>
type=sqlite<br>
driver=pysqlite<br>
dbpath=/etc/kamailio/kamailio.db<br>
...<br>
rwurl=%(type)s+%(driver)s:///%(dbpath)s<br>
rourl=%(type)s+%(driver)s:///%(dbpath)s<br>
adminurl=%(type)s+%(driver)s:///%(dbpath)s<br>
<br>
scriptsdirectory=/usr/local/share/kamailio/db_sqlite<br>
; outformat - the format to print database result<br>
; - can be: table, json, yaml, dict or raw<br>
outformat=table<br>
<br>
; outstyle - the style to print database result with tabulate
package<br>
; - default: grid<br>
# outstyle=grid<br>
....<br>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>(venv) kamailio-BT:/usr/src/kamclienv # kamcli -c
kamcli.ini.sqlite subscriber show</div>
Traceback (most recent call last):<br>
 File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in
<module><br>
  sys.exit(load_entry_point('kamcli', 'console_scripts',
'kamcli')())<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 829, in __call__<br>
  return self.main(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 782, in main<br>
  rv = self.invoke(ctx)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return _process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1066, in invoke<br>
  return ctx.invoke(self.callback, **ctx.params)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
line 73, in new_func<br>
  return ctx.invoke(f, obj, *args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
line 235, in subscriber_show<br>
  ioutils_dbres_print(ctx, oformat, ostyle, res)<br>
 File "/usr/src/kamclienv/kamcli/kamcli/ioutils.py", line 70,
in ioutils_dbres_print<br>
  gstring = tabulate(allrows, headers=res.keys(),
tablefmt=ostyle)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
line 1529, in tabulate<br>
  tabular_data, headers, showindex=showindex<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
line 1162, in _normalize_tabular_data<br>
  "headers for a list of dicts is not a dict or a keyword"<br>
<div>ValueError: headers for a list of dicts is not a dict or
a keyword</div>
<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Apr 22, 2021 at 9:41
AM Daniel-Constantin Mierla <<a
href="mailto:miconda@gmail.com" moz-do-not-send="true">miconda@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>Hello,</p>
<p>The outstyle configuration option is for kamcli, inside
kamcli.ini file.<br>
</p>
<p>I just tested with sqlite and empty subscriber table:</p>
<p># kamcli -c ../kamcli-sqlite.ini subscriber show</p>
<p><font face="monospace">+------+------------+----------+------------+-------+--------+<br>
| id  | username  | domain  | password  | ha1  |
ha1b  |<br>
+======+============+==========+============+=======+========+<br>
+------+------------+----------+------------+-------+--------+</font></p>
<p>Added a user:</p>
<p>kamcli -c ../kamcli-sqlite.ini subscriber add test
password</p>
<p>Then listed:</p>
<p>kamcli -c ../kamcli-sqlite.ini subscriber show</p>
<p><font face="monospace">+------+------------+----------+------------+----------------------------------+----------------------------------+<br>
|  id | username  | domain  | password  |
ha1Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
ha1b                            |<br>
+======+============+==========+============+==================================+==================================+<br>
|   1 | test      | <a href="http://test.com"
target="_blank" moz-do-not-send="true">test.com</a>
| password  | 30e725cfc53ca50516be2e230edf53da |
a04fcbbe67702c59dc46fe4779183fe5 |<br>
+------+------------+----------+------------+----------------------------------+----------------------------------+</font><br>
</p>
<div><br>
</div>
<div>I have tabulate 0.8.5 running on Debian 10, kamcli in
virtual environment.<br>
</div>
<div><br>
</div>
<div>Cheers,<br>
Daniel</div>
<div><br>
</div>
<div>On 22.04.21 09:25, beer Ll wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">
<div>Hi Daniel</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Apr 22,
2021 at 8:57 AM Daniel-Constantin Mierla <<a
href="mailto:miconda@gmail.com" target="_blank"
moz-do-not-send="true">miconda@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px
0px 0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<div>
<p>Hello,</p>
<p>at least some of the new errors are not the
same, they are related to unique key
conflict, see the bottom of the traces:</p>
<p>sqlite3.IntegrityError: UNIQUE constraint
failed: subscriber.username,
subscriber.domain</p>
<p>sqlalchemy.exc.IntegrityError:
(sqlite3.IntegrityError) UNIQUE constraint
failed: subscriber.username,
subscriber.domain<br>
[SQL: insert into subscriber (username,
domain, password, ha1, ha1b) values ('test',
'<a href="http://sip.test.dev"
target="_blank" moz-do-not-send="true">sip.test.dev</a>',
'passwordtest',
'96a1efd95bcd6e8e573d07ebdacab623',
'025f1dc363fa8c1ce1d7f2069d94ed0f')]</p>
<p>Regarding the subscriber show command, do
you have any outstyle configuration option
set?</p>
<p>What is the version of your tabulate
package?</p>
</div>
</div>
</blockquote>
<br>
<div>sqlite> .show<br>
    echo: off<br>
     eqp: off<br>
   explain: auto<br>
   headers: off<br>
    mode: list<br>
  nullvalue: ""<br>
   output: stdout<br>
colseparator: "|"<br>
rowseparator: "\n"<br>
    stats: off<br>
    width: <br>
  filename: /etc/kamailio/kamailio.db<br>
</div>
<div><br>
</div>
<div>(venv) kamailio-BT:/usr/src/kamclienv # pip3
show tabulate<br>
Name: tabulate<br>
Version: 0.8.9<br>
Summary: Pretty-print tabular data<br>
Home-page: <a
href="https://github.com/astanin/python-tabulate"
target="_blank" moz-do-not-send="true">https://github.com/astanin/python-tabulate</a><br>
Author: Sergey Astanin<br>
Author-email: <a
href="mailto:s.astanin@gmail.com"
target="_blank" moz-do-not-send="true">s.astanin@gmail.com</a><br>
License: MIT<br>
Location:
/usr/src/kamclienv/venv/lib/python3.7/site-packages<br>
Requires: <br>
Required-by: kamcli</div>
<div><br>
</div>
<div><br>
</div>
<div>regards<br>
</div>
<div>Â </div>
<blockquote class="gmail_quote" style="margin:0px
0px 0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<div>
<p>Cheers,<br>
Daniel</p>
</div>
<div>On 21.04.21 23:24, beer Ll wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Hi Daniel <br>
</div>
<div>many thanks for yours commits in gitÂ
kamcli.</div>
<div><br>
</div>
<div>I try the new version but my errors are
the same</div>
<br>
<div>(venv)
kamailio-BT:/usr/src/kamclienv/kamcli #
kamcli -c /etc/kamcli/kamcli.ini.sqlite
subscriber show </div>
<div><span>Traceback (most recent call
last):<br>
</span>Â File
"/usr/src/kamclienv/venv/bin/kamcli", line
33, in <module><br>
  sys.exit(load_entry_point('kamcli',
'console_scripts', 'kamcli')())<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 829, in __call__<br>
  return self.main(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 782, in main<br>
  rv = self.invoke(ctx)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return
_process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return
_process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1066, in invoke<br>
  return ctx.invoke(self.callback,
**ctx.params)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
line 73, in new_func<span><br>
  return ctx.invoke(f, obj, *args,
**kwargs)<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
line 235, in subscriber_show<br>
  ioutils_dbres_print(ctx, oformat,
ostyle, res)<br>
 File
"/usr/src/kamclienv/kamcli/kamcli/ioutils.py",
line 70, in ioutils_dbres_print<span><br>
  gstring = tabulate(allrows,
headers=res.keys(), tablefmt=ostyle)<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
line 1529, in tabulate<br>
  tabular_data, headers,
showindex=showindex<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
line 1162, in _normalize_tabular_data<span><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>
</span>(venv)
kamailio-BT:/usr/src/kamclienv/kamcli #
kamcli -c /etc/kamcli/kamcli.ini.sqlite
subscriber add test passwordtest<span><br>
Traceback (most recent call last):<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1706, in _execute_context<br>
  cursor, statement, parameters, context<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
line 716, in do_execute<br>
  cursor.execute(statement, parameters)<br>
sqlite3.IntegrityError: UNIQUE constraint
failed: subscriber.username,
subscriber.domain<span><br>
<br>
The above exception was the direct cause
of the following exception:<br>
<br>
Traceback (most recent call last):<br>
</span>Â File
"/usr/src/kamclienv/venv/bin/kamcli", line
33, in <module><br>
  sys.exit(load_entry_point('kamcli',
'console_scripts', 'kamcli')())<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 829, in __call__<br>
  return self.main(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 782, in main<br>
  rv = self.invoke(ctx)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return
_process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1259, in invoke<br>
  return
_process_result(sub_ctx.command.invoke(sub_ctx))<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 1066, in invoke<br>
  return ctx.invoke(self.callback,
**ctx.params)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
line 73, in new_func<span><br>
  return ctx.invoke(f, obj, *args,
**kwargs)<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
line 610, in invoke<br>
  return callback(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
line 69, in subscriber_add<br>
  ha1b,<span><br>
 File "<string>", line 2, in
execute<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py",
line 390, in warned<br>
  return fn(*args, **kwargs)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 3037, in execute<br>
  return connection.execute(statement,
*multiparams, **params)<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1190, in execute<br>
  future=False,<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1491, in _exec_driver_sql<br>
  distilled_parameters,<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1749, in _execute_context<span><br>
  e, statement, parameters, cursor,
context<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1930, in _handle_dbapi_exception<span><br>
  sqlalchemy_exception,
with_traceback=exc_info[2], from_=e<br>
</span>Â File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py",
line 211, in raise_<br>
  raise exception<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
line 1706, in _execute_context<br>
  cursor, statement, parameters, context<br>
 File
"/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
line 716, in do_execute<br>
  cursor.execute(statement, parameters)<br>
sqlalchemy.exc.IntegrityError:
(sqlite3.IntegrityError) UNIQUE constraint
failed: subscriber.username,
subscriber.domain<br>
[SQL: insert into subscriber (username,
domain, password, ha1, ha1b) values
('test', '<a href="http://sip.test.dev"
target="_blank" moz-do-not-send="true">sip.test.dev</a>',
'passwordtest',
'96a1efd95bcd6e8e573d07ebdacab623',
'025f1dc363fa8c1ce1d7f2069d94ed0f')]<br>
(Background on this error at: <a
href="http://sqlalche.me/e/14/gkpj"
target="_blank" moz-do-not-send="true">http://sqlalche.me/e/14/gkpj</a>)</div>
<div><br>
</div>
<div>best regards</div>
<div>
<div
id="gmail-m_-8861028049139757818gmail-m_1422917443050738590gmail-:2rl"><img
src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"
moz-do-not-send="true"></div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed,
Apr 21, 2021 at 3:10 PM Daniel-Constantin
Mierla <<a
href="mailto:miconda@gmail.com"
target="_blank" moz-do-not-send="true">miconda@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div>
<p>Hello,<br>
</p>
<div>On 18.04.21 22:56, beer Ll wrote:<br>
</div>
<blockquote type="cite">
<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"
target="_blank"
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" target="_blank"
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"
target="_blank"
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"
target="_blank"
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 cols="72">--
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank" moz-do-not-send="true">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank" moz-do-not-send="true">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - Online
May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
* <a href="https://www.asipto.com/sw/kamailio-advanced-training-online/" target="_blank" moz-do-not-send="true">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
</div>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Kamailio (SER) - Users Mailing List
<a href="mailto:sr-users@lists.kamailio.org" target="_blank" moz-do-not-send="true">sr-users@lists.kamailio.org</a>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank" moz-do-not-send="true">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<p><br>
</p>
<pre cols="72">--
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank" moz-do-not-send="true">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank" moz-do-not-send="true">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - Online
May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
* <a href="https://www.asipto.com/sw/kamailio-advanced-training-online/" target="_blank" moz-do-not-send="true">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
<pre cols="72">--
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank" moz-do-not-send="true">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank" moz-do-not-send="true">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - Online
May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
* <a href="https://www.asipto.com/sw/kamailio-advanced-training-online/" target="_blank" moz-do-not-send="true">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
</div>
</blockquote>
</div>
</blockquote>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com" moz-do-not-send="true">www.asipto.com</a>
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda" moz-do-not-send="true">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/" moz-do-not-send="true">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
</blockquote>
<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>