2012-02-08 19 views
21

Diciamo che ho una tabella 'parti' con le seguenti colonne:Uso alias() per 'selezionare come' in SQLAlchemy

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

mi piacerebbe eseguire l'equivalente di un'istruzione SQL come questo:

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

il più vicino sono venuto a dire:

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

ho problemi con la creazione del 'sum (quantità) come num' in SQLAlchemy. Sembra che ho bisogno di usare alias() ma non riesco a capire come guardando la documentazione. Sarei grato se qualcuno potesse mostrarmi come farlo.

Grazie mille!

risposta

57

In realtà si desidera il metodo label.

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

Impressionante, questo è esattamente quello che stavo cercando. Grazie molto! – Vishakh

+0

@ user1193814 - ** Eccellente **, felice di poterti aiutare! Benvenuti su Stackoverflow by the! (Se la risposta ti ha aiutato, fai clic sulla casella di controllo verde per far sapere agli altri che ha funzionato.) –

+1

Fatto! E grazie. Vedrò se posso essere un po 'utile da queste parti .. – Vishakh

Problemi correlati