bar*_*ard 4 python postgresql sqlalchemy
我的表中有 1001 行。
# 1001
print len(Session.query(MyTable).all())
Run Code Online (Sandbox Code Playgroud)
一行在列中包含字符串“Recall” info,这是一个数组。
# 1
query = Session.query(MyTable)
query = query.filter(MyTable.info.contains(['Recalled']))
print len(query.all())
Run Code Online (Sandbox Code Playgroud)
但是当我否定过滤器时,我得到 0 个结果,而不是我预期的 1000 个。
# 0
query = Session.query(MyTable)
query = query.filter(~MyTable.info.contains(['Recalled']))
print len(query.all())
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
这只是 NULL 值很棘手。您应该明确包含它们,例如
from sqlalchemy.sql import or_
query = Session.query(MyTable)
query = query.filter(or_(MyTable.info == None, ~MyTable.info.contains(['Recalled'])))
print len(query.all())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6214 次 |
| 最近记录: |