Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数组列中不包含值的行的SQLAlchemy筛选器_Python_Postgresql_Sqlalchemy - Fatal编程技术网

Python 数组列中不包含值的行的SQLAlchemy筛选器

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行

# 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())