2012-03-01 8 views
6

Кто-нибудь знает, как использовать функцию to_tsquery() для postgresql в sqlalchemy? Я много искал в Google, я не нашел ничего, что мог понять. Пожалуйста помоги.SQLAlchemy and Postgresql: to_tsquery()

Я надеюсь, что он доступен в функции фильтра, как это:

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

Ожидаемый SQL для приведенного выше запроса является чем-то вроде этого:

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

ответ

8

Для этих типов произвольных запросов, вы можете вставьте sql прямо в ваш запрос:

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

Вы также должны иметь возможность параметризовать erize t.column_name, но не может видеть документы для этого только сейчас.

+0

мой вопрос выглядит хромым сейчас. Спасибо – Sri

+0

о, и это работает как шарм :) – Sri

5

Метод .op() позволяет генерировать SQL для произвольных операторов.

session.query(TableName).filter(
    Table.c.column_name.op('@@')(to_tsquery(search_string)) 
).all() 
Смежные вопросы