Thanks for the replies. The param style is pyformat. I've tried using the '%s' style with a set and get exactly the same error.
c.execute('SELECT * FROM %s LIMIT 1',('mytable',)) psycopg2.ProgrammingError: syntax error at or near "E'mytable'" LINE 1: SELECT * FROM E'mytable' LIMIT 1 MRAB and Steve Holden may be correct, but are at odds with the psycopg2 documentation (http://initd.org/psycopg/docs/ usage.html#passing-parameters-to-sql-queries) which shows named arguments being used with a dictionary. It appears that the real problem is, as Steve mentioned, that the device driver may not allow table name substitution. The following query seems to work... c.execute('SELECT * FROM mytable WHERE id = %(id)s',{'id':'10'}) (Oddly enough, this one doesn't) c.execute('SELECT * FROM mytable WHERE id = %(id)d',{'id':int(10)}) TypeError: int argument required -- http://mail.python.org/mailman/listinfo/python-list