gpt4 book ai didi

python - 通过 sqlalchemy 关系通过 backref 属性获取 parent 的 child 会导致不必要的刷新

转载 作者:IT王子 更新时间:2023-10-29 06:28:57 25 4
gpt4 key购买 nike

我有这样的 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)

到目前为止一切顺利。但是在提交之前,当我执行以下操作时,我会刷新数据库:

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

是否可以通过更改我定义反向引用/关系的方式来避免这种情况?

最佳答案

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

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

关于python - 通过 sqlalchemy 关系通过 backref 属性获取 parent 的 child 会导致不必要的刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845372/

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