SqlAlchemy中的in_操作符与NULL
我想在使用sqlalchemy的时候,利用in_操作符来处理两个值,其中一个值是NULL(也就是mysql中的NULL)。我不知道该怎么通过Python来传递这个值。
我有一个Python的cgi程序,里面有很多参数,我把这些参数格式化后,最后存储在一个字典里,叫做queryValues
(字典的键是列名,值是用户通过表单发送过来的数据)。
for attr,value in queryValues.items() : #queryValues is a dict of parameters
valueWithNone = value.append(None) #I want to includ NULL
and_args_of_cr = [(and_(getattr(TableCR.c,attr).in_(valueWithNone)))]
我试过用None和sqlalchemy.sql.null()
,还直接尝试过in_(value,None)
,但是因为value的形式是['Yes']
,所以我不知道该怎么处理这个情况。
但是这样不行,我该怎么做呢?
1 个回答
1
这一行 value.append(None)
是直接在原来的地方修改内容,并不会返回任何东西,所以 valueWithNone
的值会是 None。这可能正是你想要的结果:
for attr,value in queryValues.items():
queryvalues = value[:] # Create a copy of list
queryvalues.append(None)
and_args_of_cr = [(and_(getattr(TableCR.c,attr).in_(queryvalues)))]