SQLalchemy查询获取字典数组的聚合结果

5

能否从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个回答

8

我猜你可以使用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()

需要注意的是,这些键将会是字符串类型,与你提供的例子中的整数键有所不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接