SqlAlchemy中的in_操作符与NULL

2 投票
1 回答
786 浏览
提问于 2025-04-18 03:46

我想在使用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)))]

撰写回答