python - 在 SQLAlchemy 过滤器表达式中执行 "ilike or ilike"时出现类型错误

标签 python sqlalchemy

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

在普通 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 组合两个完全匹配 (==) 是可行的,所以我推断我的问题与 ilikeor 运算符不兼容。

有什么提示吗?

谢谢

最佳答案

您不能在 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/

相关文章:

python - 在 Python 中编译 C++ 程序时 try catch 由于语法引起的操作系统错误

python - 转换日期Python

python - 将字符串插入 SQLAlchemy Unicode 列的正确方法

python - 如何使用 SQLAlchemy 加入 generate_series

python - SQLAlchemy 正确的模型定义和选择/插入

Python SCPClient 复制进度检查

python - 如何使用 Django 的 assertJSONEqual 来验证 View 返回 JsonResponse 的响应

python - 无循环的3x3矩阵转换(RGB颜色转换)

python - 非阻塞 Scrapy 管道到数据库

python - 如何从特定于供应商的数据类型中查找 SQLAlchemy 通用数据类型