如何删除许多孤儿

时间:2019-08-16 10:50:34

标签: python sqlalchemy many-to-many

我有两个与关联表链接的表(多对多)。 目标:如果删除父级,则应删除关联表中所有没有条目的子级。

如果我了解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

0 个答案:

没有答案