【问题标题】:Python / SQLAlchemy - load relation when foreign key is updated?Python / SQLAlchemy - 更新外键时加载关系?
【发布时间】:2011-12-03 15:57:45
【问题描述】:

我有一堂课:

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

但是chart.element 在设置element_id 后是None。有没有办法在刷新/提交之前为新对象自动加载这个关系?

【问题讨论】:

    标签: python orm sqlalchemy


    【解决方案1】:

    最好的选择是

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

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

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

    希望这会对你有所帮助。

    【讨论】:

    • 感谢您的回复。我现在正在使用这种方式。我的函数接收 element_id,我自己获取元素以将其设置在 Chart 对象中(内部完成刷新)。看来这是唯一的方法了。
    猜你喜欢
    • 2017-05-24
    • 2013-09-19
    • 2012-02-29
    • 2015-03-05
    • 2014-11-09
    • 2018-03-03
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多