我使用python 2.7和postgresql 9.3和psycopg2 2.7.3,当我尝试执行select查询时参数传递给我这个错误 psycopg2.ProgrammingError:“OR
或附近的语法错误cur = con.cursor()
cur.execute('SELECT * FROM test WHERE voucher= ? OR voucher= ?', ('RHAT', 'MSO'))
错误消息是
psycopg2.ProgrammingError:“OR”或其附近的语法错误
答案 0 :(得分:4)
Psycopg2使用%s
个占位符,而非?
个问号:
cur.execute(
'SELECT * FROM test WHERE voucher = %s OR voucher = %s',
('RHAT', 'MSO'))
请参阅Psycopg2文档的Passing parameters to SQL queries section。
Python数据库适配器通常坚持使用一种或另一种样式(附带命名参数样式)。请务必查看文档以了解使用的样式。库上有paramstyle
variable,但这并不能很好地反映出对多种样式的支持。