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