web-dev-qa-db-fra.com

Utilisation d'alias () pour «sélectionner comme» dans SQLAlchemy

Disons que j'ai une table "partages" avec les colonnes suivantes:

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

Je voudrais exécuter l'équivalent d'une instruction SQL comme ceci:

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

Le plus proche que je suis venu est:

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

J'ai du mal à configurer la "somme (quantité) en tant que num" dans sqlalchemy. Il semble que je doive utiliser alias () mais je n'arrive pas à comprendre comment en consultant la documentation. Je serais reconnaissant si quelqu'un pouvait me montrer comment le faire.

Merci beaucoup!

30
Vishakh

Vous voulez en fait la méthode label .

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