flask-sqlalchemy 级联删除
时间: 2023-08-21 22:53:22 浏览: 50
在Flask-SQLAlchemy中,级联删除是指当删除一个父对象时,自动删除与之关联的子对象。要实现级联删除,可以使用 SQLAlchemy 中的 `cascade` 参数。
假设你有两个模型,一个是父模型 `Parent`,另一个是子模型 `Child`,并且在 `Parent` 模型中有一个与 `Child` 模型建立的一对多关系。你可以在父模型中的关系字段上设置 `cascade` 参数来实现级联删除。
示例代码如下:
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_database_uri'
db = SQLAlchemy(app)
class Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
children = db.relationship('Child', cascade='all, delete', backref='parent')
class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))
# 创建数据库表
db.create_all()
```
在上面的示例中,`cascade='all, delete'` 参数设置在 `Parent` 模型的 `children` 关系字段上。这将导致当删除一个父对象时,相关联的子对象也将被自动删除。
需要注意的是,级联删除可能会对数据完整性产生影响,因此在使用级联删除时应谨慎操作,并确保你了解其潜在的影响。