【发布时间】:2023-03-17 14:16:01
【问题描述】:
我正在烧瓶中开发一个 WebApp,并使用 flask-sqlalchemy 定义我的模型并将它们存储在 SQLite 数据库中。总之,我有以下3个模型(一个Porject可以有多个文件,每个文件可以有多个结果):
class Project(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
files = db.relationship("File", backref="project", passive_deletes=True)
class File(db.Model):
id = db.Column(db.Integer, primary_key=True)
path = db.Column(db.String, nullable=False)
project_id = db.Column(
db.Integer,
db.ForeignKey("project.id", ondelete="CASCADE"),
nullable=False)
results = db.relationship("Result", backref="file", passive_deletes=True)
class Result(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String, nullable=False)
file_id = db.Column(
db.Integer,
db.ForeignKey("file.id", ondelete="CASCADE"),
nullable=False)
现在的问题是,当我创建项目时,创建并分配一些文件给项目,创建一些结果并将它们分配给一些文件,最后删除项目,级联删除的文件和结果不起作用。我找到了以下post 并按照那里的建议实现了db.relationship 属性,但问题仍然存在。
P.S.:这是一个minimal working example,它显示了问题。
P.P.S.:有人可以确认,该问题是可重现的。并不是说它只发生在我的电脑/我的环境中。
【问题讨论】:
-
ohhh...我明白了...我必须注册此侦听器,以便为每个连接执行此 pragma >.
标签: sqlite flask sqlalchemy flask-sqlalchemy cascading-deletes