使用 psycopg2 时如何修复“)”处或附近的语法错误?
How to fix Syntax error at or near ")" when using psycopg2?
我正在编写两年前由其他人制作的脚本。同时,使用的数据库已从 mySQLdb 更改为 psycopg2,这导致了一些错误。其中一个错误是语法错误。
尝试执行查询时收到错误消息,指出“)”处或附近存在语法错误。代码如下:
list = []
format_strings = ",".join([%s]) + len(list)
db.execute("SELECT * FROM table WHERE column IN (%s,%s)", (format_strings, tuple(list)))
input = db.fetchall()
错误表明语法错误在行中:table WHERE column IN (' ', ())
最初的代码如下:
db.execute("SELECT & FROM table WHERE column IN (%s)" % format_strings, tuple(list))
这个也报语法错误,网上查了一下改成了我说的第一个代码
我尝试了很多不同的尝试和错误,但没有任何效果。有谁知道如何解决这个问题?
Psycopg2 将自动 convert 元组到适合 IN
子句的结构,因此您可以对 IN
使用裸 %s
并传递单个元素列表或元组包含元组中的值以生成所需的 SQL 语句。
>>> values = [1, 2, 3]
>>> # Output the statement that will be sent to the database
>>> db.mogrify("""select * from t where col in %s""" , [tuple(values)])
b'select * from t where col in (1, 2, 3)'
我正在编写两年前由其他人制作的脚本。同时,使用的数据库已从 mySQLdb 更改为 psycopg2,这导致了一些错误。其中一个错误是语法错误。
尝试执行查询时收到错误消息,指出“)”处或附近存在语法错误。代码如下:
list = []
format_strings = ",".join([%s]) + len(list)
db.execute("SELECT * FROM table WHERE column IN (%s,%s)", (format_strings, tuple(list)))
input = db.fetchall()
错误表明语法错误在行中:table WHERE column IN (' ', ())
最初的代码如下:
db.execute("SELECT & FROM table WHERE column IN (%s)" % format_strings, tuple(list))
这个也报语法错误,网上查了一下改成了我说的第一个代码
我尝试了很多不同的尝试和错误,但没有任何效果。有谁知道如何解决这个问题?
Psycopg2 将自动 convert 元组到适合 IN
子句的结构,因此您可以对 IN
使用裸 %s
并传递单个元素列表或元组包含元组中的值以生成所需的 SQL 语句。
>>> values = [1, 2, 3]
>>> # Output the statement that will be sent to the database
>>> db.mogrify("""select * from t where col in %s""" , [tuple(values)])
b'select * from t where col in (1, 2, 3)'