1

我想通过匹配名字和姓氏字段来搜索用户。

在普通的 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

在相同的上下文中,将两个完全匹配 ( ==) by组合起来or会起作用,所以我推断我的问题与ilikeor运算符不兼容有关。

有什么提示吗?

谢谢

4

1 回答 1

1

您不能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但我不确定。

于 2013-08-23T16:07:29.080 回答