[英]TypeError when doing “ilike or ilike” in an SQLAlchemy filter expression
我想通过匹配名字和姓氏字段来搜索用户。
在普通的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
将两个完全匹配的匹配( ==
)结合使用,因此我推断我的问题与ilike
与or
运算符不兼容有关。
有什么提示吗?
谢谢
您不能使用SQLAlchemy or
以这种方式使用它。 它具有自己的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
expr1 | expr2
但我不确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.