2012-02-08 5 views
21

「と選択」の別名を()を使用するのは、私は、次の列を持つテーブルの株式」を持っているとしましょう:SQLAlchemyの中

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の中に 'NUMとして合計(数量)' の設定に問題を抱えています。エイリアス()を使う必要があると思われますが、ドキュメントを見てどのように考えているのか分かりません。もし誰かが私にそれをする方法を教えてもらえれば幸いです。

多くの感謝!

答えて

57

実際にはlabelメソッドが必要です。

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

これはまさに私が探していたものです。どうもありがとう! – Vishakh

+0

@ user1193814 - **優秀**、私は助けることができてうれしい!によるStackoverflowへようこそ! (その答えがあなたを助けたら、緑のチェックボックスをクリックして、他の人にそれが働いていることを知らせてください。) –

+1

完了!ありがとう。私はここで少し役に立つと思うでしょう。 – Vishakh