pyodbc - problem passing None as parameter

Frank Millman frank at
Thu Oct 22 16:01:33 CEST 2009

Hi all

I posted the following to the pyodbc google group, but got no reply - it 
seems a bit quiet there. I hope someone here can help.

I am using pyodbc version 2.1.6 on Windows Server 2003, connecting to Sql 
Server 2005.

This works -

>>> cur.execute('select ?', None)
<pyodbc.Cursor object at 0x00A91368>
>>> cur.fetchall()
[(None, )]

This does not work -

>>> cur.execute('select * from ctrl.dirusers where todate is ?', None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module> pyodbc.ProgrammingError: ('42000', 
"[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax 
near @P1'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server 
Driver][SQL Server]Statement(s) could not be prepared. (8180)")

You may notice that the statement is not strictly DB-API 2.0 compliant. 
pyodbc has an extension that allows you to supply arguments directly, 
instead off putting them inside a tuple. I have tried with and without a 
tuple - the result is the same.

Any assistance will be appreciated.

Frank Millman

More information about the Python-list mailing list