2017-11-09 3 views
0

Ist es möglich, ein Aggregat-Array mit Wörterbüchern aus einer SQLAlchemy-Abfrage zu erhalten? z.B.SQLalchemy Abfrage Get Aggregat Array von Dicts

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

So das erwartete Ergebnis sein wird:

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

Antwort

1

Ich denke, Sie json_build_object() Ihre Wörterbücher zu bauen verwenden:

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() 

mit dem Vorbehalt, dass die Schlüssel-Strings sein wird, im Vergleich zu den Ganzzahlschlüsseln Ihres Beispiels.