2013-11-25 39 views
8

SA對正則表達式的支持,但那些似乎是Python的正則表達式(Regular expressions in SQLalchemy queries?SQLAlchemy的+ PostgreSQL的+ PG的正則表達式

我需要匹配一些行使用正則表達式(行包含1個日誌行,所以正則表達式是一種天然比賽),但由於性能原因我寧願使用PG後端,這樣做就像this question

select * from table where name ~ 'foo'; 

我怎麼能在一個查詢同時結合了PG-實現正則表達式和SQLAlchemy的對象選擇?

回答

11

Query對象的filter()方法允許您爲過濾器使用原始SQL。所以,你可以做...

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

請注意,如果你要提供這個作爲參數,你可以使用text()和 ...

from sqlalchemy.sql import text 

Table.query.filter(text('name ~ :reg')).params(reg='foo') 

因爲我們定義「章」使用text()綁定過濾器中的參數,我們需要確保我們定義了值,我們可以使用params()來進行定義。

+0

謝謝!!這個綁定參數的東西也非常有用(防止sql注入等)。 – LetMeSOThat4U

7

請注意,您還可以使用管道符支持:

session.query(Table).filter(Table.name.op("~")('foo')) 
相關問題