我想通过匹配姓名和姓氏字段来搜索用户。
在普通SQL中,我会这样做:
SELECT * FROM user
WHERE (first_name ILIKE 'pattern') OR (last_name LIKE 'pattern');
我正在用SQLAlchemy尝试以下几种方法:
User.query().filter(User.last_name.ilike(pattern) \
or User.first_name.ilike(pattern))
我得到以下错误:TypeError: Boolean value of this clause is not defined
在相同的上下文中,将or
的两个精确匹配(or
)组合起来是可行的,因此我推断出我的问题与ilike
与or
运算符不兼容有关。
有什么暗示吗?
谢谢
发布于 2013-08-23 16:07:29
不能将or
以这种方式与SQLAlchemy一起使用。它有自己的or_
函数:
query.filter(or_(expr1, expr2))
具体而言:
User.query().filter(or_(User.last_name.ilike(pattern),
User.first_name.ilike(pattern)))
and_
、not_
和in_
(可能还有更多)也是如此。我想你可以做一些像expr1 | expr2
这样的事情,但我不确定。
https://stackoverflow.com/questions/18407173
复制相似问题