python - SQLalchemy 查询获取字典的聚合数组

标签 python postgresql 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'}]),
]

最佳答案

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

需要注意的是,与您的示例的整数键相比,键将是字符串。

关于python - SQLalchemy 查询获取字典的聚合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47203445/

相关文章:

python - 如何在 sqlalchemy 中使用 SQLite fts MATCH 查询

python - 如何合并具有稍微不同的合并字段的 DataFrame

python - 在环境中不设置密码的情况下恢复PostgreSQL数据库

ruby-on-rails - Rails 4 x postgresql:ActiveRecord::InvalidForeignKey

django:从 postgres 数据库导入数据时无法适应错误

python - SQLAlchemy 在删除表时被阻止

sqlite - SQLAlchemy、反射、不同的后端和表/列不区分大小写

python - scipy 中的傅里叶变换和 Parseval 的恒等式

python - 导入您自己的 Python 模块

Python 3.4 多线程和传递变量