2012-04-27 13 views
18

¿Cuál es la mejor manera de crear una consulta intencionalmente vacía en SQLAlchemy?SQLAlchemy: ¿crear una consulta intencionalmente vacía?

Por ejemplo, tengo algunas funciones que crean la consulta (agregando WHERE cláusulas, por ejemplo), y en algunos puntos sé que el resultado estará vacío.

¿Cuál es la mejor manera de crear una consulta que no devuelva ninguna fila? Algo así como QuerySet.none() de Django.

+0

¿Cuál es la razón por la que le gustaría reemplazar la consulta sin retorno de fila con la falsa? ¿Todavía necesita conservar el tipo de devolución (un objeto mapeado o similar)? – van

+1

Dos razones: la primera sería el rendimiento (y para evitar la advertencia que se emite al probar la pertenencia en una lista vacía (por ejemplo, 'foo.in _ ([])')), y la segunda sería la legibilidad (por ejemplo, ' if user.has_no_permissions(): return empty() ') –

+0

¿Por qué no devuelves una' lista/tupla' vacía [segunda pregunta en mi primer comentario]? – van

Respuesta

20

Si necesita el tipo de devolución adecuado, simplemente devuelva session.query(MyObject).filter(sqlalchemy.sql.false()). Cuando se evalúa, esto todavía golpeará la base de datos, pero debe ser rápido.

Cuestiones relacionadas