首页 > 解决方案 > 如何在 SQLAlchemy 中使用 PostgreSQL 的 jsonb_to_record?

问题描述

PostgreSQL 具有类似jsonb_to_recordjsonb_populate_record允许您将存储在 JSONB 列中的数据转换为单独列的功能。但是,我使用的是 SQLAlchemy,并且jsonb_to_record需要预定义的输出结构(请参阅下面来自 PostgreSQL 文档的示例)

select * from json_to_record('{"a":1,"b":[1,2,3],"c":"bar"}') as x(a int, b text, d text)

有没有办法使用 SQLAlchemy 中的这些函数?

标签: pythonpostgresqlsqlalchemyjsonb

解决方案


您可以使用 SQLAlchemy 中的任何 postgres 函数和 func ,如下所示:

from SQLAlchemy import func
session.query(func.json_to_record(Model.jsonb_field))

请注意,使用 SQLAlchemy 处理 set-returning 函数有点麻烦,但如果你愿意,你可以让它工作。


推荐阅读