2017-11-09 4 views
0

SQLAlchemyクエリから辞書を含む集約配列を取得することはできますか?例えばSQLalchemyクエリで辞書の配列を取得する

session.query(
    Object.name, 
    func.array_agg({Location.id: Location.name}).label('locations') 
)\ 
    .join(Location)\ 
    .all() 

だから、期待される結果は次のようになります。

[ 
('Horizontal neutral circuit', 
    [{143:'A5'},{145:'A8'},{765:'B12'}]), 
('Fletcher, Lopez and Edwards', 
    [{41:'A1'},{76:'B8'},{765:'B12'}]), 
] 

答えて

1

私はあなたがあなたの辞書を構築するためにjson_build_object()を使うことができると思います:

from sqlalchemy.dialects import postgresql 

session.query(
     Object.name, 
     postgresql.array_agg(
      func.json_build_object(Location.id, 
            Location.name)).label('locations'))\ 
    .join(Location)\ 
    .group_by(Object.name)\ 
    .all() 

キーは文字列になることを警告して、比較あなたの例の整数キー。

関連する問題