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

时间:2011-10-08 18:02:38

标签: python orm sqlalchemy

我有一个班级:

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 个答案:

答案 0 :(得分:5)

最好的选择是

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

将直接对象分配给关系船。如果您指定element_id,那么直到它被刷新它将在内存中。在内部,它将触发查询SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id,但该element_id数据不存储或存在于内存中。

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

希望这会对你有所帮助。