我有一张名为Configuration
的表格。 Configuration
有多个字段,表示为列表,每个表使用ForeignKey
到Configuration
。
因此,其中一个表的示例是Users
,其中Configuration
为外键,另一列为username
。
我有一个表单被发送以更新每个Configuration
,因为理论上应该使用相关信息更新每个相关表。
例如,我目前可能有
Configuration
with Users: [Bob, John]
并且表单提供
Configuration
with Users: [Jan]
现在,我只需要Configuration
的一行,Users
的一行Jan
。
相反,Bob
和John
会被删除。如何在一个事务中执行此操作,以便查询数据库的用户可以看到新配置或旧配置。
我目前正在做类似的事情:
clear_dependents(id)
db.session.commit()
add_dependents(id, fields)
db.session.commit()
但是,由于我在清除依赖表后提交,因此查询应用程序理论上可以看到空配置。如果更新新表失败,如何避免这种情况并回滚到旧配置?
我已经尝试db.session.flush()
但如果表单中的新配置包含较旧的配置值(重复错误),则无效。失败的示例将使用:
with Users: [Jan, Bob] as Bob has not been deleted on an dependent table yet