【问题标题】:SQLAlchemy + PostgreSQL + PG regexSQLAlchemy + PostgreSQL + PG 正则表达式
【发布时间】:2013-12-10 13:21:04
【问题描述】:

SA 支持正则表达式,但那些似乎是 Python 正则表达式 (Regular expressions in SQLalchemy queries?)

我需要使用正则表达式来匹配某些行(一行包含 1 个日志行,因此正则表达式是自然匹配),但出于性能原因,我更喜欢使用 PG 后端,例如 this question:

select * from table where name ~ 'foo';

如何在一个查询中结合 PG 实现的正则表达式和 SQLAlchemy 对象选择?

【问题讨论】:

    标签: python regex postgresql sqlalchemy


    【解决方案1】:

    请注意,您也可以使用中缀运算符支持:

    session.query(Table).filter(Table.name.op("~")('foo'))
    

    【讨论】:

      【解决方案2】:

      Query 对象的filter() 方法允许您将原始SQL 用于过滤器。所以,你可以这样做......

      Table.query.filter("name ~ 'foo'")
      

      请注意,如果您想将其作为参数提供,您可以使用 text()params()...

      from sqlalchemy.sql import text
      
      Table.query.filter(text('name ~ :reg')).params(reg='foo')
      

      因为我们在过滤器中使用text() 定义了“reg”绑定参数,所以我们需要确保我们定义了值,我们可以使用params() 来做到这一点。

      【讨论】:

      • 谢谢!!这个带绑定参数的东西也很有用(防止sql注入之类的)。
      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多