pysqlite2.dbapi2.ProgrammingError: Incorrect number of bindings supplied. The current statement uses

Discussion in 'Python' started by F. GEIGER, May 17, 2005.

  1. F. GEIGER

    F. GEIGER Guest

    Im on Python 2.3.4, using pysqlite 2.0.0 (final).

    When I try to execute

    self._dbc.execute(q, data)

    where q is 'select count(*) from Difflets ' and date is None

    I get the following exception:

    pysqlite2.dbapi2.ProgrammingError: Incorrect number of bindings supplied.
    The current statement uses 0, and there are -1 supplied.

    Any ideas?

    Many thanks in advance and kind regards
    Franz GEIGER
     
    F. GEIGER, May 17, 2005
    #1
    1. Advertisements

  2. F. GEIGER

    F. GEIGER Guest

    Arrgh, sorry for that post!

    self._dbc.execute(q, data)

    where data is None, works with MySQL. For SQLite I have to write

    if data is not None:
    self._dbc.execute(q, data)
    else:
    self._dbc.execute(q)

    Sorry again,
    Franz GEIGER
     
    F. GEIGER, May 17, 2005
    #2
    1. Advertisements

  3. No, you have to write:

    self._dbc.execute(q, (data,))

    in both drivers.

    i. e. the second parameter to execute *must* be a sequence. Some drivers
    (maybe MySQLdb, too) automatically correct the wrong call and transform a:

    execute(sql, single_param)

    into a

    execute(sql, (single_param,))

    for you if they notice that "!PySequence_Check(single_param)".

    pysqlite 2 does not do this.

    HTH,

    -- Gerhard
     
    =?ISO-8859-1?Q?Gerhard_H=E4ring?=, May 17, 2005
    #3
  4. F. GEIGER

    F. GEIGER Guest

    Thank you Gerhard,

    Okay, that makes sense.

    Many thanks again
    Franz
     
    F. GEIGER, May 18, 2005
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.