加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 通过sqlalchemy关系通过backref属性获取父项子项会导

发布时间:2020-12-16 21:48:06 所属栏目:Python 来源:网络整理
导读:我有像这样的sqlalchemy关系(为简单而修剪): class Parent(Base): __tablename__ = 'Parent' name = Column(String,nullable=False) def __init__(self,name) self.name = nameclass Child(Base): __tablename__ = 'Child' name = Column(String,nullable=F

我有像这样的sqlalchemy关系(为简单而修剪):

class Parent(Base):
  __tablename__ = 'Parent'
  name = Column(String,nullable=False)
  def __init__(self,name)
    self.name = name

class Child(Base):
  __tablename__ = 'Child'
    name = Column(String,nullable=False)
    parent = relationship(Parent,backref=backref('children')
  def __init__(self,name,parent)
    self.name = name
    self.parent = parent

在我的对象工作的同时:

parent = Parent("my parent")
db_session.add(parent) # must be done for other reasons not relevant to the issue.
child = Child("my child",parent)

到现在为止还挺好.
但是在我执行以下操作之前,我得到了一个DB flush:

children = parent.children # using the backref causes a flush

通过改变我定义backref /关系的方式可以避免这种情况吗?

最佳答案
使用Session.no_autoflush上下文管理器应该以安全的方式实现您想要的:

with session.no_autoflush:    
    parent = Parent("my parent")
    db_session.add(parent) 
    child = Child("my child",parent)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读