Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在NOT in语句中使用Postgresql ANY运算符_Python_Postgresql_Psycopg2 - Fatal编程技术网

Python 如何在NOT in语句中使用Postgresql ANY运算符

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

使用Pyscopg2,如何将Python列表传递到SQL语句中

正常工作的SQL读取():

使用Psycopg2如下所示:

Psycopg2:查询1

下面的查询因psycopg2而失败。编程错误:语法错误位于或接近“ANY”

Psycopg2:查询2

下面的查询没有抛出错误,但给出了错误的结果,因为它没有排除列表中的ID。它的行为就像它是一个等于运算符,或者像它在语句中是一个
,而我想要一个
而不是在

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,));