SQLAlchemy のサブクエリ
サブクエリのフィールドが見つからないといわれてちょっとハマった。
複数のカゴの中にりんごが複数入っているとする。
すべてのカゴに入っているりんごの総数を集計するサブクエリは以下のように書ける。
りんごのID (apple_id) と総数 (total) をフィールドとしてもたせる。
apple_in_bucket = session.query( AppleInBucket.apple_id, func.sum(AppleInBucket.count).label("total") ).group_by( AppleInBucket.apple_id ).subquery()
この時、apple_in_bucket.apple_id
としてもAttributeError
を吐く。
サブクエリのフィールドにアクセスするには、c
というフィールドを経由する必要がある。
(c はcolumnsの略らしい。もっといいインターフェイスはなかったのだろうか。)
apple_in_bucket.c.total
でりんごの総数をめでたく取得できる。