Python 数组列中不包含值的行的SQLAlchemy筛选器
我的桌子上有1001行Python 数组列中不包含值的行的SQLAlchemy筛选器,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我的桌子上有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
# 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())
为什么这不起作用?这只是空值比较棘手。您应该明确地包括它们,比如
from sqlalchemy.sql import or_
query = Session.query(MyTable)
query = query.filter(or_(MyTable.info == None, ~MyTable.info.contains(['Recalled'])))
print len(query.all())