2012-03-01 26 views
6

¿Alguien sabe cómo usar la función to_tsquery() de postgresql en sqlalchemy? Busqué mucho en Google, no encontré nada que pueda entender. Por favor ayuda.SQLAlchemy y Postgresql: to_tsquery()

espero que está disponible en la función de filtro de la siguiente manera:

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

El SQL esperado para la consulta anterior es algo como esto:

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

Respuesta

8

Para este tipo de consultas arbitrarias, que pueda incrusta el sql directamente en tu consulta:

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

También deberías ser capaz de parametrizar erize t.column_name, pero no puedo ver los documentos para eso ahora.

+0

mi pregunta parece coja ahora. Gracias – Sri

+0

oh y funciona como un encanto :) – Sri

5

El método .op() le permite generar SQL para operadores arbitrarios.

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