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 > -- http://mail.python.org/mailman/listinfo/python-list