gpt4 book ai didi

python - 如何在 NOT IN 语句中使用 Postgresql ANY 运算符

转载 作者:行者123 更新时间:2023-11-29 12:05:09 27 4
gpt4 key购买 nike

使用 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 .在这种情况下可以使用吗?如果可以,我该如何使用它?

最佳答案

当你做的时候

select 2 != any(array[2,3,4]);
?column?
----------
t

2 将与所有数组项进行比较,如果有任何项 2 不相等,它将评估为 true

使用 not id = any(array[2,3,4])

select not 1 = any(array[2,3,4]);
?column?
----------
t

select not 2 = any(array[2,3,4]);
?column?
----------
f

或者!= all

select 1 != all(array[2,3,4]);
?column?
----------
t

select 2 != all(array[2,3,4]);
?column?
----------
f

关于python - 如何在 NOT IN 语句中使用 Postgresql ANY 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com