[SR-Users] kamcli db sqlite / posgresql error

Daniel-Constantin Mierla miconda at gmail.com
Thu Apr 22 17:23:42 CEST 2021


OK, thanks for testing and feedback!

Daniel

On 22.04.21 15:46, beer Ll wrote:
> Hi
>
> now it works perfectly.
>
> Many thanks
>
>
>
> On Thu, Apr 22, 2021 at 12:04 PM Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>     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.
>
>     I haven't tested with older versions of Python than 3.7, though.
>
>     Cheers,
>     Daniel
>
>     On 22.04.21 10:50, Daniel-Constantin Mierla wrote:
>>
>>     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 <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/59965009/attachment.htm>


More information about the sr-users mailing list