luk*_*kik 6 python postgresql psycopg2
使用 Pyscopg2,如何使用 ANY 运算符将 Python 列表传递到 SQL 语句中?
正常工作的 SQL 读取(请参阅 SQL Fiddle):
SELECT * FROM student WHERE id NOT IN (3);
Run Code Online (Sandbox Code Playgroud)
使用 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);
Run Code Online (Sandbox Code Playgroud)
Psycopg2:查询 2
下面的查询不会引发错误,但会给出错误的结果,因为它不排除列表中的 ID。它表现得好像它是一个等于运算符,或者像它的IN语句一样具体,而我想要一个NOT IN
id_list = [2,3,4]
cursor.execute("SELECT * FROM student WHERE id != ANY(%s)), (id_list,);
Run Code Online (Sandbox Code Playgroud)
另外,在我的搜索中,我遇到了pyscopg2 扩展 SQL_IN。在这种情况下可以使用吗?如果是这样,我该如何使用它?
Clo*_*eto 10
当你做
select 2 != any(array[2,3,4]);
?column?
----------
t
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
或者 != all
select 1 != all(array[2,3,4]);
?column?
----------
t
select 2 != all(array[2,3,4]);
?column?
----------
f
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4892 次 |
| 最近记录: |