我的桌子上有1001行。
# 1001
print len(Session.query(MyTable).all())
一行在info
列中有一个字符串'Recalled',这是一个数组。
# 1
query = Session.query(MyTable)
query = query.filter(MyTable.info.contains(['Recalled']))
print len(query.all())
但是当我否定过滤器时,我得到0结果,而不是像我期望的那样得到1000。
# 0
query = Session.query(MyTable)
query = query.filter(~MyTable.info.contains(['Recalled']))
print len(query.all())
为什么这不起作用?
答案 0 :(得分:4)
这只是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())