繁体   English   中英

在SQLAlchemy过滤器表达式中执行“ ilike或ilike”时发生TypeError

[英]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将两个完全匹配的匹配( == )结合使用,因此我推断我的问题与ilikeor运算符不兼容有关。

有什么提示吗?

谢谢

您不能使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM