web-dev-qa-db-ja.com

SQLAlchemyで 'select as'にalias()を使用する

次の列を持つ「shares」というテーブルがあるとします。

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

次のようなSQLステートメントに相当するものを実行したいと思います。

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

私が来た最も近いのは:

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

Sqlalchemyで「sum(quantity)as num」を設定するのに問題があります。 alias()を使用する必要があるように見えますが、ドキュメントを調べても方法がわかりません。方法を教えてもらえたらありがたいです。

どうもありがとう!

30
Vishakh

実際には 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