【问题标题】:how to execute LIKE query in sqlalchemy?如何在 sqlalchemy 中执行 LIKE 查询?
【发布时间】: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 处给出错误。我怎样才能做到这一点?

【问题讨论】:

    标签: python mysql sql select sqlalchemy


    【解决方案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 部分!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2017-11-05
    • 1970-01-01
    • 2019-03-27
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多