mad*_*ad_ 7 python sqlalchemy one-to-many cascading-deletes
如果子表中的关联行已被删除,我想删除父行。
class Child(Base):
__tablename__ = "children"
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey("parents.id", ondelete='CASCADE'))
class Parent(Base):
__tablename__ = "parents"
id = Column(Integer, primary_key=True)
child = relationship(Child, backref="parent", passive_deletes=True)
Run Code Online (Sandbox Code Playgroud)
如果我移除孩子
child_obj = session.query(Child).first()
session.delete(child_obj)
session.commit()
Run Code Online (Sandbox Code Playgroud)
它确实删除了子对象,但父对象保持原样。我也想使用级联删除父级。
您可以阅读此主题: Linking Relationships with Backref
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
addresses = relationship("Address", backref="user")
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('user.id'))
Run Code Online (Sandbox Code Playgroud)
你可以在你的子类中定义它:
parent = relationship(Parent, backref=backref("children", cascade="all,delete"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |