DB-API corner case (psycopg2)
Thomas Guettler
guettli at thomas-guettler.de
Fri Aug 1 14:38:07 EDT 2008
I forgot to mention where I stumbled about this.
Django has a wrapper:
http://code.djangoproject.com/browser/django/trunk/django/db/backends/util.py
def execute(self, sql, params=()):
start = time()
try:
return self.cursor.execute(sql, params)
finally:
Most people don't have a percent sign in the variable sql.
I guess
cursor.execute(sql, None)
is not portable for all database backends.
I guess this should be the best solution:
if params:
return self.cursor.execute(sql, params)
else:
return self.cursor.execute(sql)
What do you think?
Thomas
Thomas Guettler schrieb:
> Hi,
>
> I discovered this:
>
> import psycopg2
> connection=psycopg2.connect("dbname='...' user='...'")
> cursor=connection.cursor()
> cursor.execute('''SELECT '%' ''') # Does not fail
> cursor.execute('''SELECT '%' ''', ()) # Does fail
>
> Traceback (most recent call last):
> File "/localhome/modw/tmp/t.py", line 5, in <module>
> cursor.execute('''SELECT '%' ''', ()) # Does fail
> IndexError: tuple index out of range
>
> Is this a bug in psycopg2?
>
> How do other PEP 249 implementation behave?
>
> Regards,
> Thomas
>
More information about the Python-list
mailing list