2012-02-08 13 views
21

Powiedzmy Mam tabeli „akcji” z następującymi kolumnami:Korzystanie alias() dla „wybrać jako” w SQLAlchemy

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

Chciałbym uruchomić odpowiednik SQL tak:

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

najbliżej Doszedłem jest:

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

mam kłopoty z konfigurowania 'sumę (ilość) jako num' w SQLAlchemy. Wygląda na to, że potrzebuję użyć alias(), ale nie mogę się zorientować, jak wygląda dokumentacja. Byłbym wdzięczny, gdyby ktoś mógł mi pokazać, jak to zrobić.

Wielkie dzięki!

Odpowiedz

57

Rzeczywiście chcesz metodę label.

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

Niesamowite, właśnie tego szukałem. Wielkie dzięki! – Vishakh

+0

@ user1193814 - ** Excellent **, cieszę się, że mogłem pomóc! Witamy w Stackoverflow by the! (Jeśli odpowiedź ci pomogła, kliknij zielone pole wyboru, aby inni wiedzieli, że zadziałało.) –

+1

Zrobione! I dzięki. Zobaczę, czy mogę tu być trochę przydatny. – Vishakh