我想通过匹配名字和姓氏字段来搜索用户。
在普通 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:未定义此子句的 bool 值
在相同的上下文中,通过 or
组合两个完全匹配 (==
) 是可行的,所以我推断我的问题与 ilike
与 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
但我不确定。
关于python - 在 SQLAlchemy 过滤器表达式中执行 "ilike or ilike"时出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407173/