SQLAlchemy DELETE由具有相同关系的延迟加载和动态版本引起的错误

SQLAlchemy DELETE由具有相同关系的延迟加载和动态版本引起的错误,第1张

SQLAlchemy DELETE由具有相同关系的延迟加载和动态版本引起的错误

Group.users和Group.users_dynamic关系都试图调和组正在被删除以及能够管理

User()
它们引用的对象这一事实;第一种关系成功,而第二种关系失败,因为关联表中的行已被删除。最直接的解决方案是将除了一个相同的关系以外的所有关系都标记为viewonly:

class Group(base):    __tablename__ = 'groups'    id = Column(Integer, primary_key=True)    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')    users_dynamic = relationship('User', viewonly=True, secondary=users_groups, lazy='dynamic')

如果您仍然希望两个关系都处理一定程度的突变,则您需要仔细进行此 *** 作,因为SQLAlchemy不知道如何同时协调两个关系中的更改,因此这样的冲突可能会继续如果您在两个关系上进行同等的突变,则会发生(例如双插入等)。为了仅解决“删除”问题,您还可以尝试将Group.users_dynamic设置为passive_deletes
= True:

class Group(base):    __tablename__ = 'groups'    id = Column(Integer, primary_key=True)    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')    users_dynamic = relationship('User', passive_deletes=True, secondary=users_groups, lazy='dynamic')


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5617340.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存