Let*_*t4U 8 python regex postgresql sqlalchemy
SA支持正则表达式,但那些似乎是Python regexps(SQLalchemy查询中的正则表达式?)
我需要在匹配某些行时使用正则表达式(一行包含1个日志行,因此正则表达式是自然匹配)但出于性能原因,我更倾向于使用PG后端,就像在这个问题中一样:
select * from table where name ~ 'foo';
Run Code Online (Sandbox Code Playgroud)
如何在一个查询中将PG实现的正则表达式和SQLAlchemy对象选择结合起来?
Chr*_*ers 15
请注意,您还可以使用中缀运算符支持:
session.query(Table).filter(Table.name.op("~")('foo'))
Run Code Online (Sandbox Code Playgroud)
Mar*_*eth 13
filter()Query对象的方法允许您使用原始SQL作为过滤器.所以,你可以......
Table.query.filter("name ~ 'foo'")
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想将此作为参数提供,则可以使用text()和params()...
from sqlalchemy.sql import text
Table.query.filter(text('name ~ :reg')).params(reg='foo')
Run Code Online (Sandbox Code Playgroud)
因为我们在过滤器中使用定义"reg"绑定参数,所以text()我们需要确保定义我们可以使用的值params().