2012-03-01 14 views
6

Czy ktoś wie, jak korzystać z funkcji to_tsquery() z postgresql w sqlalchemy? Szukałem dużo w Google, nie znalazłem niczego, co mógłbym zrozumieć. Proszę pomóż.SQLAlchemy i Postgresql: to_tsquery()

Mam nadzieję, że jest on dostępny w funkcji filtra jak ten:

session.query(TableName).filter(Table.column_name.to_tsquery(search_string)).all() 

Oczekiwany SQL dla powyższego zapytania jest mniej więcej tak:

Select column_name 
    from table_name t 
    where t.column_name @@ to_tsquery(:search_string) 

Odpowiedz

8

Dla tego typu dowolnych zapytań, można osadzić sql bezpośrednio w zapytaniu:

session.query(TableName).\ 
    filter("t.column_name @@ to_tsquery(:search_string)").\ 
    params(search_string=search_string).all() 

Powinieneś być również w stanie parametryzować erize t.column_name, ale nie widzę dokumentów do tego właśnie teraz.

+0

moje pytanie wygląda teraz kulawy. Dzięki – Sri

+0

oh i działa jak urok :) – Sri

5

Metoda .op() umożliwia generowanie kodu SQL dla dowolnych operatorów.

session.query(TableName).filter(
    Table.c.column_name.op('@@')(to_tsquery(search_string)) 
).all()