我有两个与关联表链接的表(多对多)。 目标:如果删除父级,则应删除关联表中所有没有条目的子级。
如果我了解https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html#deleting-rows-from-the-many-to-many-table上的文档 这应该开箱即用吗? 我还玩了cascade =“ delete”,但是这个删除太多了
parentChildLinkTable = db.Table('plasGp',
Column('parent_id', db.Integer(), db.ForeignKey('parents.id')),
Column('gp_id', db.Integer(), db.ForeignKey('children.id'))
)
class Child(SurrogatePK, Model):
__tablename__ = "children"
name = Column(db.String(250), nullable = False)
parents = db.relationship("Parent",
secondary = parentChildLinkTable,
back_populates = "children")
class Parent(SurrogatePK, Model):
__tablename__ = "parents"
name= Column(db.String(50))
children = db.relationship("Child",
secondary = parentChildLinkTable,
back_populates = "parents",
cascade="delete")
总结: 如何删除仅映射到我要删除的父级的所有子级。
说
ParA -> ChildA
ParA -> ChildB
ParB -> ChildA
ParB -> ChildC
我删除了ParB,那么结果应该是:
ParA -> ChildA
ParA -> ChildB