SQLAlchemy PostgreSQL row_to_json关系

问题描述 投票:0回答:1

我想知道是否可以使用服务器函数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上)? (针对性能问题)

谢谢

python json postgresql sqlalchemy relationship
1个回答
0
投票

现在这是两个不同的表。如果您想使用jsonb而不是仅仅将JSON转换为文档的属性,则需要使用兼容的json类型之一将所有图像数据移动到Documentation下的新列中。由于这是一个1:1的关系,它们无论如何都属于同一个表。

© www.soinside.com 2019 - 2024. All rights reserved.