Python / SQLAlchemy - 更新外键时加载关联?

6 投票
1 回答
671 浏览
提问于 2025-04-17 03:57

我有一个类:

class Chart(Base):
   __tablename__ = 'chart'
   id = C('chart_id', Integer, primary_key=True)
   element_id = C(Integer, ForeignKey('element.element_id'))
   element = relationship(Element)
   name = C(String)

   def __init__(self, name):
      self.name = name

这个类的用法很常见,

chart = Chart('Some name')
chart.element_id = element_id

但是在设置了 element_id 之后,chart.element 变成了 None。有没有什么办法可以在保存之前自动加载这个关系,以便新对象能用上?

1 个回答

6

最好的选择是

chart = Chart('Some name')
chart.element = element

直接将对象分配给关系。如果你分配了 element_id,那么在刷新之前,它会一直保存在内存中。内部会执行一个查询 SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id,但是这个 element_id 的数据并没有被存储,或者说它只是在内存中。

所以我建议直接分配对象,如果你不想刷新。

希望这对你有帮助。

撰写回答