[SR-Users] kamcli db sqlite / posgresql error

Daniel-Constantin Mierla miconda at gmail.com
Thu Apr 22 10:50:01 CEST 2021


Hello,

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.

Cheers,
Daniel

On 22.04.21 10:25, beer Ll wrote:
> Hi
>
> my kamcli.ini is
>
> (venv) kamailio-BT:/usr/src/kamclienv # cat kamcli.ini.sqlite
> ### main options
> [main]
> ; SIP domain to be used when an AoR has no domain
> domain=sip.test.dev <http://sip.test.dev>
>
>
> ### database connectivity - URLs are used for SQL Alchemy
> [db]
> type=sqlite
> driver=pysqlite
> dbpath=/etc/kamailio/kamailio.db
> ...
> rwurl=%(type)s+%(driver)s:///%(dbpath)s
> rourl=%(type)s+%(driver)s:///%(dbpath)s
> adminurl=%(type)s+%(driver)s:///%(dbpath)s
>
> scriptsdirectory=/usr/local/share/kamailio/db_sqlite
> ; outformat - the format to print database result
> ; - can be: table, json, yaml, dict or raw
> outformat=table
>
> ; outstyle - the style to print database result with tabulate package
> ; - default: grid
> # outstyle=grid
> ....
>
>
>
> (venv) kamailio-BT:/usr/src/kamclienv # kamcli -c kamcli.ini.sqlite
> subscriber show
> Traceback (most recent call last):
>   File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in <module>
>     sys.exit(load_entry_point('kamcli', 'console_scripts', 'kamcli')())
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 829, in __call__
>     return self.main(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 782, in main
>     rv = self.invoke(ctx)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 1259, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 1066, in invoke
>     return ctx.invoke(self.callback, **ctx.params)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 610, in invoke
>     return callback(*args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
> line 73, in new_func
>     return ctx.invoke(f, obj, *args, **kwargs)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
> line 610, in invoke
>     return callback(*args, **kwargs)
>   File "/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
> line 235, in subscriber_show
>     ioutils_dbres_print(ctx, oformat, ostyle, res)
>   File "/usr/src/kamclienv/kamcli/kamcli/ioutils.py", line 70, in
> ioutils_dbres_print
>     gstring = tabulate(allrows, headers=res.keys(), tablefmt=ostyle)
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
> line 1529, in tabulate
>     tabular_data, headers, showindex=showindex
>   File
> "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
> line 1162, in _normalize_tabular_data
>     "headers for a list of dicts is not a dict or a keyword"
> ValueError: headers for a list of dicts is not a dict or a keyword
>
>
> On Thu, Apr 22, 2021 at 9:41 AM Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>     The outstyle configuration option is for kamcli, inside kamcli.ini
>     file.
>
>     I just tested with sqlite and empty subscriber table:
>
>     # kamcli -c ../kamcli-sqlite.ini subscriber show
>
>     +------+------------+----------+------------+-------+--------+
>     | id   | username   | domain   | password   | ha1   | ha1b   |
>     +======+============+==========+============+=======+========+
>     +------+------------+----------+------------+-------+--------+
>
>     Added a user:
>
>     kamcli -c ../kamcli-sqlite.ini subscriber add test password
>
>     Then listed:
>
>     kamcli -c ../kamcli-sqlite.ini subscriber show
>
>     +------+------------+----------+------------+----------------------------------+----------------------------------+
>     |   id | username   | domain   | password   |
>     ha1                              | ha1b                             |
>     +======+============+==========+============+==================================+==================================+
>     |    1 | test       | test.com <http://test.com> | password   |
>     30e725cfc53ca50516be2e230edf53da | a04fcbbe67702c59dc46fe4779183fe5 |
>     +------+------------+----------+------------+----------------------------------+----------------------------------+
>
>
>     I have tabulate 0.8.5 running on Debian 10, kamcli in virtual
>     environment.
>
>     Cheers,
>     Daniel
>
>     On 22.04.21 09:25, beer Ll wrote:
>>     Hi Daniel
>>
>>
>>     On Thu, Apr 22, 2021 at 8:57 AM Daniel-Constantin Mierla
>>     <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>         Hello,
>>
>>         at least some of the new errors are not the same, they are
>>         related to unique key conflict, see the bottom of the traces:
>>
>>         sqlite3.IntegrityError: UNIQUE constraint failed:
>>         subscriber.username, subscriber.domain
>>
>>         sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError)
>>         UNIQUE constraint failed: subscriber.username, subscriber.domain
>>         [SQL: insert into subscriber (username, domain, password,
>>         ha1, ha1b) values ('test', 'sip.test.dev
>>         <http://sip.test.dev>', 'passwordtest',
>>         '96a1efd95bcd6e8e573d07ebdacab623',
>>         '025f1dc363fa8c1ce1d7f2069d94ed0f')]
>>
>>         Regarding the subscriber show command, do you have any
>>         outstyle configuration option set?
>>
>>         What is the version of your tabulate package?
>>
>>
>>     sqlite> .show
>>             echo: off
>>              eqp: off
>>          explain: auto
>>          headers: off
>>             mode: list
>>        nullvalue: ""
>>           output: stdout
>>     colseparator: "|"
>>     rowseparator: "\n"
>>            stats: off
>>            width:
>>         filename: /etc/kamailio/kamailio.db
>>
>>     (venv) kamailio-BT:/usr/src/kamclienv # pip3 show tabulate
>>     Name: tabulate
>>     Version: 0.8.9
>>     Summary: Pretty-print tabular data
>>     Home-page: https://github.com/astanin/python-tabulate
>>     <https://github.com/astanin/python-tabulate>
>>     Author: Sergey Astanin
>>     Author-email: s.astanin at gmail.com <mailto:s.astanin at gmail.com>
>>     License: MIT
>>     Location: /usr/src/kamclienv/venv/lib/python3.7/site-packages
>>     Requires:
>>     Required-by: kamcli
>>
>>
>>     regards
>>      
>>
>>         Cheers,
>>         Daniel
>>
>>         On 21.04.21 23:24, beer Ll wrote:
>>>         Hi Daniel
>>>         many thanks for yours commits in git  kamcli.
>>>
>>>         I try the new version but my errors are the same
>>>
>>>         (venv) kamailio-BT:/usr/src/kamclienv/kamcli # kamcli -c
>>>         /etc/kamcli/kamcli.ini.sqlite subscriber show
>>>         Traceback (most recent call last):
>>>           File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in
>>>         <module>
>>>             sys.exit(load_entry_point('kamcli', 'console_scripts',
>>>         'kamcli')())
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 829, in __call__
>>>             return self.main(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 782, in main
>>>             rv = self.invoke(ctx)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1259, in invoke
>>>             return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1259, in invoke
>>>             return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1066, in invoke
>>>             return ctx.invoke(self.callback, **ctx.params)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 610, in invoke
>>>             return callback(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
>>>         line 73, in new_func
>>>             return ctx.invoke(f, obj, *args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 610, in invoke
>>>             return callback(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
>>>         line 235, in subscriber_show
>>>             ioutils_dbres_print(ctx, oformat, ostyle, res)
>>>           File "/usr/src/kamclienv/kamcli/kamcli/ioutils.py", line
>>>         70, in ioutils_dbres_print
>>>             gstring = tabulate(allrows, headers=res.keys(),
>>>         tablefmt=ostyle)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
>>>         line 1529, in tabulate
>>>             tabular_data, headers, showindex=showindex
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/tabulate.py",
>>>         line 1162, in _normalize_tabular_data
>>>             "headers for a list of dicts is not a dict or a keyword"
>>>         ValueError: headers for a list of dicts is not a dict or a
>>>         keyword
>>>         (venv) kamailio-BT:/usr/src/kamclienv/kamcli # kamcli -c
>>>         /etc/kamcli/kamcli.ini.sqlite subscriber add test passwordtest
>>>         Traceback (most recent call last):
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1706, in _execute_context
>>>             cursor, statement, parameters, context
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
>>>         line 716, in do_execute
>>>             cursor.execute(statement, parameters)
>>>         sqlite3.IntegrityError: UNIQUE constraint failed:
>>>         subscriber.username, subscriber.domain
>>>
>>>         The above exception was the direct cause of the following
>>>         exception:
>>>
>>>         Traceback (most recent call last):
>>>           File "/usr/src/kamclienv/venv/bin/kamcli", line 33, in
>>>         <module>
>>>             sys.exit(load_entry_point('kamcli', 'console_scripts',
>>>         'kamcli')())
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 829, in __call__
>>>             return self.main(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 782, in main
>>>             rv = self.invoke(ctx)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1259, in invoke
>>>             return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1259, in invoke
>>>             return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 1066, in invoke
>>>             return ctx.invoke(self.callback, **ctx.params)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 610, in invoke
>>>             return callback(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/decorators.py",
>>>         line 73, in new_func
>>>             return ctx.invoke(f, obj, *args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/click/core.py",
>>>         line 610, in invoke
>>>             return callback(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/kamcli/kamcli/commands/cmd_subscriber.py",
>>>         line 69, in subscriber_add
>>>             ha1b,
>>>           File "<string>", line 2, in execute
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py",
>>>         line 390, in warned
>>>             return fn(*args, **kwargs)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 3037, in execute
>>>             return connection.execute(statement, *multiparams, **params)
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1190, in execute
>>>             future=False,
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1491, in _exec_driver_sql
>>>             distilled_parameters,
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1749, in _execute_context
>>>             e, statement, parameters, cursor, context
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1930, in _handle_dbapi_exception
>>>             sqlalchemy_exception, with_traceback=exc_info[2], from_=e
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py",
>>>         line 211, in raise_
>>>             raise exception
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py",
>>>         line 1706, in _execute_context
>>>             cursor, statement, parameters, context
>>>           File
>>>         "/usr/src/kamclienv/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py",
>>>         line 716, in do_execute
>>>             cursor.execute(statement, parameters)
>>>         sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError)
>>>         UNIQUE constraint failed: subscriber.username, subscriber.domain
>>>         [SQL: insert into subscriber (username, domain, password,
>>>         ha1, ha1b) values ('test', 'sip.test.dev
>>>         <http://sip.test.dev>', 'passwordtest',
>>>         '96a1efd95bcd6e8e573d07ebdacab623',
>>>         '025f1dc363fa8c1ce1d7f2069d94ed0f')]
>>>         (Background on this error at: http://sqlalche.me/e/14/gkpj
>>>         <http://sqlalche.me/e/14/gkpj>)
>>>
>>>         best regards
>>>
>>>         On Wed, Apr 21, 2021 at 3:10 PM Daniel-Constantin Mierla
>>>         <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>>
>>>             Hello,
>>>
>>>             On 18.04.21 22:56, beer Ll wrote:
>>>>             Hi ,
>>>>
>>>>             I have a server test with
>>>>
>>>>             Debian Buster 10.9
>>>>             kamailio 5.4.5 
>>>>             kamcli 2.0.0 (similar result with 3.0.0)
>>>>
>>>>             I'm not able to use kamcli
>>>>             with sqlite  : insert and select doesn't work
>>>>             with pgsql :  insert works , select of empty table
>>>>             works , select table with entry doesn't work
>>>>
>>>>
>>>>             TEST WITH SQLITE
>>>>             root at kamailio-BT:~# kamcli -c
>>>>             /etc/kamcli/kamcli.ini.sqlite subscriber add test password
>>>>             Traceback (most recent call last):
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1706, in _execute_context
>>>>                 cursor, statement, parameters, context
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py",
>>>>             line 716, in do_execute
>>>>                 cursor.execute(statement, parameters)
>>>>             sqlite3.OperationalError: near "%": syntax error
>>>>
>>>>             The above exception was the direct cause of the
>>>>             following exception:
>>>>
>>>>             Traceback (most recent call last):
>>>>               File "/usr/bin/kamcli", line 11, in <module>
>>>>                 load_entry_point('kamcli==2.0.0',
>>>>             'console_scripts', 'kamcli')()
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 829, in __call__
>>>>                 return self.main(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 782, in main
>>>>                 rv = self.invoke(ctx)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1066, in invoke
>>>>                 return ctx.invoke(self.callback, **ctx.params)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/decorators.py",
>>>>             line 73, in new_func
>>>>                 return ctx.invoke(f, obj, *args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
>>>>             line 43, in subscriber_add
>>>>                 e.execute('insert into subscriber (username,
>>>>             domain, password, ha1, ha1b) values (%s, %s, %s, %s,
>>>>             %s)', udata['username'], udata['domain'], password,
>>>>             ha1, ha1b)
>>>>               File "<string>", line 2, in execute
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/deprecations.py",
>>>>             line 390, in warned
>>>>                 return fn(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 3037, in execute
>>>>                 return connection.execute(statement, *multiparams,
>>>>             **params)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1190, in execute
>>>>                 future=False,
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1491, in _exec_driver_sql
>>>>                 distilled_parameters,
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1749, in _execute_context
>>>>                 e, statement, parameters, cursor, context
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1930, in _handle_dbapi_exception
>>>>                 sqlalchemy_exception, with_traceback=exc_info[2],
>>>>             from_=e
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py",
>>>>             line 211, in raise_
>>>>                 raise exception
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py",
>>>>             line 1706, in _execute_context
>>>>                 cursor, statement, parameters, context
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py",
>>>>             line 716, in do_execute
>>>>                 cursor.execute(statement, parameters)
>>>>             sqlalchemy.exc.OperationalError:
>>>>             (sqlite3.OperationalError) near "%": syntax error
>>>>             [SQL: insert into subscriber (username, domain,
>>>>             password, ha1, ha1b) values (%s, %s, %s, %s, %s)]
>>>>             [parameters: ('test', 'sip.test.dev
>>>>             <http://sip.test.dev>', 'password',
>>>>             '4380ea9069e888b5fc92996495a0f481',
>>>>             '3a36aeb0df7f4504cc5d9b97dab540e5')]
>>>>             (Background on this error at:
>>>>             http://sqlalche.me/e/14/e3q8
>>>>             <http://sqlalche.me/e/14/e3q8>)
>>>>
>>>>             root at kamailio-BT:~# kamctl add  test password
>>>>             -e sqlite_query: /usr/bin/sqlite3
>>>>              /etc/kamailio/kamailio.db insert into subscriber
>>>>             (username, domain,ha1,ha1b,password) values
>>>>             ('test','sip.test.dev
>>>>             <http://sip.test.dev>','4380ea9069e888b5fc92996495a0f481','3a36aeb0df7f4504cc5d9b97dab540e5','password');
>>>>             -e new user 'test' added
>>>>
>>>>             root at kamailio-BT:~# kamcli -c
>>>>             /etc/kamcli/kamcli.ini.sqlite subscriber show
>>>>             Traceback (most recent call last):
>>>>               File "/usr/bin/kamcli", line 11, in <module>
>>>>                 load_entry_point('kamcli==2.0.0',
>>>>             'console_scripts', 'kamcli')()
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 829, in __call__
>>>>                 return self.main(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 782, in main
>>>>                 rv = self.invoke(ctx)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1066, in invoke
>>>>                 return ctx.invoke(self.callback, **ctx.params)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/decorators.py",
>>>>             line 73, in new_func
>>>>                 return ctx.invoke(f, obj, *args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
>>>>             line 118, in subscriber_show
>>>>                 ioutils_dbres_print(ctx, oformat, ostyle, res)
>>>>               File
>>>>             "/usr/lib/python3/dist-packages/kamcli/ioutils.py",
>>>>             line 45, in ioutils_dbres_print
>>>>                 gstring = tabulate(allrows, headers=res.keys(),
>>>>             tablefmt=ostyle)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/tabulate.py",
>>>>             line 1529, in tabulate
>>>>                 tabular_data, headers, showindex=showindex
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/tabulate.py",
>>>>             line 1162, in _normalize_tabular_data
>>>>                 "headers for a list of dicts is not a dict or a
>>>>             keyword"
>>>>             ValueError: headers for a list of dicts is not a dict
>>>>             or a keyword
>>>>
>>>>
>>>>             TEST WITH PGSQL
>>>>             root at kamailio-BT:~# kamcli -c
>>>>             /etc/kamcli/kamcli.ini.pgsql subscriber show
>>>>             +------+------------+----------+------------+-------+--------+
>>>>             | id   | username   | domain   | password   | ha1   |
>>>>             ha1b   |
>>>>             +======+============+==========+============+=======+========+
>>>>             +------+------------+----------+------------+-------+--------+
>>>>             root at kamailio-BT:~# kamcli -c
>>>>             /etc/kamcli/kamcli.ini.pgsql subscriber add test password
>>>>             root at kamailio-BT:~# kamcli -c
>>>>             /etc/kamcli/kamcli.ini.pgsql subscriber show
>>>>             Traceback (most recent call last):
>>>>               File "/usr/bin/kamcli", line 11, in <module>
>>>>                 load_entry_point('kamcli==2.0.0',
>>>>             'console_scripts', 'kamcli')()
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 829, in __call__
>>>>                 return self.main(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 782, in main
>>>>                 rv = self.invoke(ctx)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1259, in invoke
>>>>                 return _process_result(sub_ctx.command.invoke(sub_ctx))
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 1066, in invoke
>>>>                 return ctx.invoke(self.callback, **ctx.params)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/decorators.py",
>>>>             line 73, in new_func
>>>>                 return ctx.invoke(f, obj, *args, **kwargs)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/click/core.py",
>>>>             line 610, in invoke
>>>>                 return callback(*args, **kwargs)
>>>>               File
>>>>             "/usr/lib/python3/dist-packages/kamcli/commands/cmd_subscriber.py",
>>>>             line 118, in subscriber_show
>>>>                 ioutils_dbres_print(ctx, oformat, ostyle, res)
>>>>               File
>>>>             "/usr/lib/python3/dist-packages/kamcli/ioutils.py",
>>>>             line 45, in ioutils_dbres_print
>>>>                 gstring = tabulate(allrows, headers=res.keys(),
>>>>             tablefmt=ostyle)
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/tabulate.py",
>>>>             line 1529, in tabulate
>>>>                 tabular_data, headers, showindex=showindex
>>>>               File
>>>>             "/usr/local/lib/python3.7/dist-packages/tabulate.py",
>>>>             line 1162, in _normalize_tabular_data
>>>>                 "headers for a list of dicts is not a dict or a
>>>>             keyword"
>>>>             ValueError: headers for a list of dicts is not a dict
>>>>             or a keyword
>>>>
>>>>             root at kamailio-BT:~# kamctl show test
>>>>             1|test|sip.test.dev
>>>>             <http://sip.test.dev>|password|4380ea9069e888b5fc92996495a0f481|3a36aeb0df7f4504cc5d9b97dab540e5
>>>
>>>             thanks for reporting!
>>>
>>>             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.
>>>
>>>             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.
>>>
>>>             Cheers,
>>>             Daniel
>>>
>>>             -- 
>>>             Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>>>             www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>>>             Kamailio Advanced Training - Online
>>>             May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>>               * https://www.asipto.com/sw/kamailio-advanced-training-online/ <https://www.asipto.com/sw/kamailio-advanced-training-online/>
>>>
>>>
>>>         _______________________________________________
>>>         Kamailio (SER) - Users Mailing List
>>>         sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>>>         https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users>
>>
>>
>>         -- 
>>         Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>>         www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>>         Kamailio Advanced Training - Online
>>         May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>           * https://www.asipto.com/sw/kamailio-advanced-training-online/ <https://www.asipto.com/sw/kamailio-advanced-training-online/>
>>
>     -- 
>     Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>     www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>     Kamailio Advanced Training - Online
>     May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>       * https://www.asipto.com/sw/kamailio-advanced-training-online/ <https://www.asipto.com/sw/kamailio-advanced-training-online/>
>
-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - Online
May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
  * https://www.asipto.com/sw/kamailio-advanced-training-online/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210422/3024973e/attachment.htm>


More information about the sr-users mailing list