SQLAlchemy+PostgreSQL+PG正则表达式



SA支持正则表达式,但它们似乎是Python正则表达式(SQLalchemy查询中的正则表达式?)

我需要在匹配某些行时使用regex(一行包含1个日志行,因此regex是一个自然的匹配),但出于性能原因,我更喜欢使用PG后端进行匹配,比如这个问题:

select * from table where name ~ 'foo';

如何将PG实现的regex和SQLAlchemy对象选择组合在一个查询中?

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

session.query(Table).filter(Table.name.op("~")('foo'))
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()来完成。

最新更新