2011-06-05 12 views
5

Tengo una consulta de usuario que se filtra por la cantidad de pedidos que tiene cada usuario (ordersCount).filtro sqlalchemy por columna de conteo

User.query.filter('ordersCount>2') 

Si lo corro que dice: "Desconocido columna 'ordersCount' en 'cláusula where'"

Desde mi experiencia que debería usar teniendo en este tipo de operaciones Debido a que MySQL no permitirá que para los campos no forma parte de la mesa, pero si me encuentro con que tiene lugar del filtro de recibo:

(1054, "Unknown column 'ordersCount' in 'having clause'") 'SELECT count(1) AS count_1 \nFROM user \nHAVING ordersCount > 2'() 

Entonces, ¿cómo montar un filtro de una columna de recuento en sqlalchemy?

Respuesta

11

Consulte la documentación de Ordering, Grouping, Limiting, Offset...ing. Basado en el código de ejemplo proporcionado y una suposición de que sus pedidos se almacenan en la tabla orders, su versión será similar a:

>>> s = select([orders.c.user_id, func.count(orders.c.id)]).\ 
...  group_by(orders.c.user_id).having(func.count(orders.c.id) > 2) 

De esta manera obtendrá los user_id 's de los usuarios en cuestión. Si desea recuperar objetos User, solo haga el s sobre una subconsulta y una su consulta User con esta subconsulta para recuperar los usos en cuestión.

Cuestiones relacionadas