您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Flask一對多關系級聯刪除怎么實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Flask一對多關系級聯刪除怎么實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
一對多關系,當刪除主表數據的時候,關聯表數據一起刪除掉
模型設計
class Person(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) addresses = db.relationship('Address', backref='person', cascade="all,delete") class Address(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(50)) person_id = db.Column(db.Integer, db.ForeignKey('person.id'))
主要是在 relationship 加一個cascade="all,delete"
屬性
其它關聯刪除方式
### 只刪除父級,子不影響 # 1. addresses = db.relationship('Address', backref='person', passive_deletes=True) ### 子級跟隨刪除 # 2. addresses = db.relationship('Address', backref='person', cascade="all, delete-orphan") # 3. addresses = db.relationship('Address', backref='person', cascade="all, delete") ## 父級刪除,子級不刪除,外鍵更新為 null # 4. addresses = relationship("Address", backref = backref("child"))
新增數據
person = Person(name='yoyo') person.addresses = [ Address(email='123@qq.com') ] db.session.add(person) db.session.commit() # 提交
刪除Person 表數據,關聯表一并刪除
p = Person.query.filter_by(name='yoyo').first() db.session.delete(p) db.session.commit()
讀到這里,這篇“Flask一對多關系級聯刪除怎么實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。