SQLAlchemy删除所有依赖项并添加所有依赖项

时间:2015-12-03 22:36:49

标签: python mysql sqlalchemy

我有一张名为Configuration的表格。 Configuration有多个字段,表示为列表,每个表使用ForeignKeyConfiguration

因此,其中一个表的示例是Users,其中Configuration为外键,另一列为username

我有一个表单被发送以更新每个Configuration,因为理论上应该使用相关信息更新每个相关表。

例如,我目前可能有

Configuration
with Users: [Bob, John]

并且表单提供

Configuration
with Users: [Jan]

现在,我只需要Configuration的一行,Users的一行Jan

相反,BobJohn会被删除。如何在一个事务中执行此操作,以便查询数据库的用户可以看到新配置或旧配置。

我目前正在做类似的事情:

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

0 个答案:

没有答案