psycopg2.ProgrammingError:“OR”或其附近的语法错误

时间:2017-10-01 10:49:20

标签: python postgresql psycopg2

我使用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”或其附近的语法错误

1 个答案:

答案 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,但这并不能很好地反映出对多种样式的支持。