5
我已閱讀文檔,但我仍然無法準確理解如何正確配置我的模型。這是一個非常簡單的電視節目數據庫,我想對其進行配置,這樣一個劇集必須有一個對應的顯示父節點實例存在於數據庫中。每當一個節目被刪除時,我希望它的所有劇集都被級聯刪除。SQLAlchemy關係級聯刪除
TL; DR:show.delete() - >所有情節EP其中ep.show_id == show.id被刪除
如何做到這一點?
class Show(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(128), nullable=False)
class Episode(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(256), nullable=False)
# relationships
show_id = db.Column(db.Integer, db.ForeignKey('show.id'), nullable=False)
show = db.relationship('Show',
backref=db.backref('episodes'),
lazy='joined')
我見過的人使用'ondelete = 「CASCADE」',那怎麼與我的問題呢? –
上述選項使數據庫級聯刪除,而'cascade'選項使客戶端組織刪除。如果你想這樣考慮,我建議你閱讀你的數據庫(對於功能)和SQLA文檔。 「級聯」方式更加細化,但「ondelete」方式*也會很有趣。 – javex