首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError在SQLAlchemy筛选器表达式中执行"ilike或ilike“时

TypeError在SQLAlchemy筛选器表达式中执行"ilike或ilike“时
EN

Stack Overflow用户
提问于 2013-08-23 16:01:28
回答 1查看 1.7K关注 0票数 1

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

在普通SQL中,我会这样做:

代码语言:javascript
运行
复制
SELECT * FROM user
WHERE (first_name ILIKE 'pattern') OR (last_name LIKE 'pattern');

我正在用SQLAlchemy尝试以下几种方法:

代码语言:javascript
运行
复制
User.query().filter(User.last_name.ilike(pattern) \
                    or User.first_name.ilike(pattern))

我得到以下错误:TypeError: Boolean value of this clause is not defined

在相同的上下文中,将or的两个精确匹配(or)组合起来是可行的,因此我推断出我的问题与ilikeor运算符不兼容有关。

有什么暗示吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-23 16:07:29

不能将or以这种方式与SQLAlchemy一起使用。它有自己的or_函数:

代码语言:javascript
运行
复制
query.filter(or_(expr1, expr2))

具体而言:

代码语言:javascript
运行
复制
User.query().filter(or_(User.last_name.ilike(pattern),
                        User.first_name.ilike(pattern)))

and_not_in_ (可能还有更多)也是如此。我想你可以做一些像expr1 | expr2这样的事情,但我不确定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18407173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档