2012-02-08 9 views
21

Digamos que tengo una tabla 'acciones' con las siguientes columnas:Uso de alias() para 'seleccione como' en SQLAlchemy

company price quantity 
Microsoft 100  10 
Google  99  5 
Google  99  20 
Google  101  15 

me gustaría correr el equivalente a una instrucción SQL como esto:

select price, sum(quantity) as num from shares where company='Google' group by price; 

lo más cerca que he llegado es:

result = dbsession.query(Shares.price, func.sum(Shares.quantity)).filter(Shares.company== 'Google').group_by(Shares.price).all() 

Tengo problemas con la creación de la 'suma (cantidad) como num' en sqlalchemy. Parece que necesito usar alias() pero no puedo entender cómo al mirar la documentación. Estaría agradecido si alguien pudiera mostrarme cómo hacerlo.

¡Muchas gracias!

Respuesta

57

Usted realmente quiere el método label.

result = dbsession.query(Shares.price, \ 
          func.sum(Shares.quantity).label("Total sold")) \ 
          .filter(Shares.company== 'Google') \ 
          .group_by(Shares.price).all() 
+0

Impresionante, eso es exactamente lo que estaba buscando. ¡Muchas gracias! – Vishakh

+0

@ user1193814 - ** Excelente **, ¡me alegro de poder ayudar! Bienvenido a Stackoverflow por el! (Si la respuesta lo ayudó, haga clic en la casilla de verificación verde para que los demás sepan que funcionó). –

+1

¡Listo! Y gracias. Voy a ver si puedo ser un poco útil por aquí ... – Vishakh

Cuestiones relacionadas