psycopg2 / psycopg2.ProgrammingError: syntax error at or near "E'mytable'"
Hey all,
Right now I'm completely unable to pass parameters to queries under
any circumstances. I've got a fairly trivial query as a test...
c.execute('SELECT * FROM %(table_name)s LIMIT 1',
{'table_name':"mytable"})
It fails, giving the error message...
Traceback (most recent call last):
File "test.py", line 7, in
c.execute('SELECT * FROM %(table_name)s LIMIT 1',
{'table_name':"mytable"})
psycopg2.ProgrammingError: syntax error at or near "E'mytable'"
LINE 1: SELECT * FROM E'mytable' LIMIT 1
This may be similar to the problem that ASh had (http://
groups.google.com/group/comp.lang.python/browse_thread/thread/
7463ded0971425f8/538e60ba0ccf2ad3?#538e60ba0ccf2ad3)
I'd really appreciate any ideas. At the moment, I'm stuck
concatenating strings and hoping for the best.
--
http://mail.python.org/mailman/listinfo/python-list
Re: psycopg2 / psycopg2.ProgrammingError: syntax error at or near "E'mytable'"
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
