如何在 sqlalchemy 中执行 LIKE 查询?
Posted
技术标签:
【中文标题】如何在 sqlalchemy 中执行 LIKE 查询?【英文标题】:how to execute LIKE query in sqlalchemy? 【发布时间】:2014-07-18 10:04:27 【问题描述】:我正在使用sqlalchemy
从表中获取数据。
现在从名为audit_trail_table
的表中获取所有记录正在按预期工作。
select_stmt = select([self.audit_trail_table]).where(self.audit_trail_table.c.id == int(id))
row = conn.execute(select_stmt).fetchone()
现在我希望在多个列上执行LIKE
查询,如下所示:
filter_query = #(some value which will work as a filter_query while fetching )records
filter_stmt = select([self.audit_trail_table]).where(self.audit_trail_table.c.first_name like '%' + filter_query + '%' or self.audit_trail_table.c.last_name like '%')
但它在 LIKE 处给出错误。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:您可以使用like
运算符:
select([self.audit_trail_table]).where(
self.audit_trail_table.c.first_name.like('%' + filter_query + '%') or
self.audit_trail_table.c.last_name.like('%abc%')
)
【讨论】:
它适用于单个like()
。但是当我将两个like()
函数与or
组合为:TypeError: Boolean value of this clause is not defined
时出现错误
你必须使用 django 的 OR 运算符而不是 python 的 OR 运算符
是的。我使用了来自 sqlalchemy 的or_()
。非常感谢您的帮助!
你也可以用contains
代替like
@RedBaron 这应该是一个答案,而不是隐藏在 cmets 部分!以上是关于如何在 sqlalchemy 中执行 LIKE 查询?的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy query with OR/AND/like common filters