gpt4 book ai didi

python - SQLAlchemy 外键延迟加载

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:01 26 4
gpt4 key购买 nike

我有一个基本的一对多关系:

class Term(Base):
__tablename__ = 'term'
id = Column(Integer, primary_key=True)

class Node(Base):
__tablename__ = 'node'
id = Column(Integer, primary_key=True)
term = Column(Integer, ForeignKey('term.id'))

但是当我加载 Node 对象,访问“term”属性时,我只得到数字术语 id,而不是 Term 对象。

node = session.query(Node).filter(Node.id == 1).one()
print node.term # 123

如何获取外键字段以延迟加载对象?

非常感谢。本

最佳答案

因为您的 term 属性是一个 Column,sqlalchemy 将它映射为该列的值。您可以使用 relationship 让 sqlalchemy 实际加载引用行:

from sqlalchemy.orm import relationship

class Term(Base):
__tablename__ = 'term'
id = Column(Integer, primary_key=True)

class Node(Base):
__tablename__ = 'node'
id = Column(Integer, primary_key=True)
term = Column(Integer, ForeignKey('term.id'))
related_term = relationship(Term, backref="nodes")

因为 my_node.related_term 看起来有点奇怪,所以我更喜欢将列命名为 table_column 而不仅仅是 table , 这样我也可以在表之后命名 relationship 属性,而不是发明其他一些奇怪的名称。

关于python - SQLAlchemy 外键延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com