【发布时间】:2014-11-17 05:48:10
【问题描述】:
使用 Pyscopg2,如何将 Python 列表传递到 SQL 语句 using the ANY Operator?
正常工作 SQL 读取 (See SQL Fiddle):
SELECT * FROM student WHERE id NOT IN (3);
使用 Psycopg2 如下:
Psycopg2:查询 1
下面的查询失败,psycopg2.ProgrammingError: syntax error at or near "ANY"
id_list = [2,3,4]
cursor.execute("SELECT * FROM student WHERE id NOT IN ANY(%s)) %(id_list);
Psycopg2:查询 2
下面的查询不会引发错误,但会给出错误的结果,因为它没有排除列表中的 ID。它的行为就好像它是一个 Equal To 运算符,或者具体来说就像它的一个 IN 语句,而我想要一个 NOT IN
id_list = [2,3,4]
cursor.execute("SELECT * FROM student WHERE id != ANY(%s)), (id_list,);
另外,在我的搜索中,我遇到了pyscopg2 extension SQL_IN。在这种情况下可以使用吗?如果是这样,我该如何使用它?
【问题讨论】:
标签: python postgresql psycopg2