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

Gerhard Häring gh at ghaering.de
Tue May 17 17:05:16 EDT 2005


F. GEIGER wrote:
> 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)

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



More information about the Python-list mailing list