Ich habe die Dokumentation gelesen, aber ich kann immer noch nicht genau zu verstehen, wie ich meine Modelle richtig konfigurieren. Es ist eine sehr einfache TV-Show-Datenbank und ich möchte es so konfigurieren, dass eine Episode eine entsprechende show Elternteil-Instanz in der Datenbank haben muss. Wenn eine Show gelöscht wird, möchte ich, dass alle Episoden kaskadiert werden.SQLAlchemy Beziehung Kaskadenlöschung
TL; DR: show.delete() -> alle Episoden ep wo ep.show_id == show.id werden
gelöscht Wie kann ich das erreichen?
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')
Ich habe Leute gesehen verwenden 'onDelete = "CASCADE"', wie geht das auf mein Problem beziehen? –
Die angegebene Option bewirkt, dass die Datenbank kaskadiert, während die Option 'cascade' den Client veranlasst, die Löschvorgänge zu organisieren. Ich schlage vor, Sie lesen in Ihrer Datenbank (für Fähigkeiten) und die SQLA-Dokumente, wenn Sie so denken möchten. Der "Kaskaden" -Weg ist feiner, aber auch der "Ondelete" -Weg * könnte interessant sein. – javex