<div dir="ltr"><div>Hi</div><div><br></div><div>now it works perfectly.</div><div><br></div><div>Many thanks</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 22, 2021 at 12:04 PM Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com">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>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>On 22.04.21 10:50, Daniel-Constantin
      Mierla wrote:<br>
    </div>
    <blockquote type="cite">
      
      <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>On 22.04.21 10:25, beer Ll wrote:<br>
      </div>
      <blockquote type="cite">
        
        <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" target="_blank">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" target="_blank">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">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">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">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">https://github.com/astanin/python-tabulate</a><br>
                      Author: Sergey Astanin<br>
                      Author-email: <a href="mailto:s.astanin@gmail.com" target="_blank">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">sip.test.dev</a>',
                              'passwordtest',
                              '96a1efd95bcd6e8e573d07ebdacab623',
                              '025f1dc363fa8c1ce1d7f2069d94ed0f')]<br>
                              (Background on this error at: <a href="http://sqlalche.me/e/14/gkpj" target="_blank">http://sqlalche.me/e/14/gkpj</a>)</div>
                            <div><br>
                            </div>
                            <div>best regards</div>
                            <div>
                              <div id="gmail-m_-7527887145220403532gmail-m_-8861028049139757818gmail-m_1422917443050738590gmail-:2rl"><img src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"></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">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">sip.test.dev</a>',
                                      'password',
                                      '4380ea9069e888b5fc92996495a0f481',
'3a36aeb0df7f4504cc5d9b97dab540e5')]<br>
                                      (Background on this error at: <a href="http://sqlalche.me/e/14/e3q8" target="_blank">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">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">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">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">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">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">sr-users@lists.kamailio.org</a>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">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">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">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">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">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">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">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
            </div>
          </blockquote>
        </div>
      </blockquote>
      <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">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">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
    </blockquote>
    <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank">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">https://www.asipto.com/sw/kamailio-advanced-training-online/</a></pre>
  </div>

</blockquote></div>