Python 如何在NOT in语句中使用Postgresql ANY运算符
使用Pyscopg2,如何将Python列表传递到SQL语句中 正常工作的SQL读取(): 使用Psycopg2如下所示: Psycopg2:查询1 下面的查询因psycopg2而失败。编程错误:语法错误位于或接近“ANY” Psycopg2:查询2 下面的查询没有抛出错误,但给出了错误的结果,因为它没有排除列表中的ID。它的行为就像它是一个等于运算符,或者像它在语句中是一个Python 如何在NOT in语句中使用Postgresql ANY运算符,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,使用Pyscopg2,如何将Python列表传递到SQL语句中 正常工作的SQL读取(): 使用Psycopg2如下所示: Psycopg2:查询1 下面的查询因psycopg2而失败。编程错误:语法错误位于或接近“ANY” Psycopg2:查询2 下面的查询没有抛出错误,但给出了错误的结果,因为它没有排除列表中的ID。它的行为就像它是一个等于运算符,或者像它在语句中是一个,而我想要一个而不是在 id_list = [2,3,4] cursor.execute("SELECT * FROM s
,而我想要一个而不是在
id_list = [2,3,4]
cursor.execute("SELECT * FROM student WHERE id != ANY(%s)), (id_list,);
而且,在我的搜索中,我遇到了。在这种情况下可以使用它吗?如果是,我该如何使用它?当您使用时
select 2 != any(array[2,3,4]);
?column?
----------
t
2
将与所有数组项进行比较,如果有任何2
不相等的项,它将计算为true
使用notid=any(数组[2,3,4])
或!=全部
select 1 != all(array[2,3,4]);
?column?
----------
t
select 2 != all(array[2,3,4]);
?column?
----------
f
适配器中的SQL\u可以通过调整元组而不是列表(列表调整为PostgreSQL数组)来使用IN
操作符。要使查询正常工作,您应该编写以下代码:
id_list = (2,3,4) # Note the tuple!
cursor.execute("SELECT * FROM student WHERE id NOT IN %s", (id_list,));
首先,如何配置游标以使用
适配器中的SQL\u?默认情况下它已经配置好了。它是列表的默认适配器。
select not 1 = any(array[2,3,4]);
?column?
----------
t
select not 2 = any(array[2,3,4]);
?column?
----------
f
select 1 != all(array[2,3,4]);
?column?
----------
t
select 2 != all(array[2,3,4]);
?column?
----------
f
id_list = (2,3,4) # Note the tuple!
cursor.execute("SELECT * FROM student WHERE id NOT IN %s", (id_list,));