SQLAlchemy PostgreSQL row_to_json关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLAlchemy PostgreSQL row_to_json关系相关的知识,希望对你有一定的参考价值。
我想知道是否可以使用服务器函数jsonb或row_to_json来包装关系,而不是使用python在json中转换结果。
当我检索文档时,我希望将Image对象作为json。
class Documentation(Base):
__tablename__ = 'documentation'
id = Column(UUID, server_default=text("uuid_generate_v4()"), primary_key=True)
url = Column(String, nullable=False)
description = Column(String)
name = Column(String)
image_id = Column(UUID,ForeignKey(Image.id))
image = relationship(Image,backref="image_data",lazy="subquery")
class Image(Base):
__tablename__ = 'image'
id = Column(UUID, server_default=text("uuid_generate_v4()"), primary_key=True)
name = Column(VARCHAR(128), nullable=False)
info = Column(JSONB)
image = Column(BYTEA)
我想要使用sqlalchemy翻译的sql请求的例子:
select doc.*,
row_to_json(image.*) as image
from documentation doc
left join image on doc.image_id = image.id;
SQLAlchemy(当前请求)
q = Session.query(Documentation).all()
是否有可能使用sqlalchemy serverside(在postgresql上)? (针对性能问题)
谢谢
答案
现在这是两个不同的表。如果您想使用jsonb而不是仅仅将JSON转换为文档的属性,则需要使用兼容的json类型之一将所有图像数据移动到Documentation下的新列中。由于这是一个1:1的关系,它们无论如何都属于同一个表。
以上是关于SQLAlchemy PostgreSQL row_to_json关系的主要内容,如果未能解决你的问题,请参考以下文章
使用 sqlalchemy 连接到本地 postgresql
在 PostgreSQL 上使用 SQLAlchemy 创建全文搜索索引
SQLAlchemy - 在 postgresql 中执行批量 upsert(如果存在,更新,否则插入)
SQLAlchemy、Psycopg2 和 Postgresql 复制