【发布时间】:2019-06-30 18:50:31
【问题描述】:
我正在通过 Flask-SQLAlchemy 使用更高级别的 SQLAlchemy ORM。我希望能够创建多个表,然后在单个事务中提交它们。但是,一个表与所有其他表相关,我不确定如何在它实际存在之前扩散它的 ID。 (请注意,它的主键是一个自增的值,在我们实际执行 SQL 之前不存在。)
例如,假设我们有TableA 和TableB。 TableB 有一个名为 table_a_id 的列。 TableA ID 由数据库管理;它会自动递增,并且在我们创建一行 TableA 之前不存在。
我希望能够同时创建TableA 和TableB,如果出现任何问题回滚事务。
在一个可以使用魔法的完美世界中,我的代码应该是这样的:
try:
a = TableA()
b = TableB(table_a_id=a.id) # a.id is None, since nothing has happened yet.
db.session.commit()
except Exception:
db.session.rollback()
是否可以通过子交易在交易中填写a.id的值?
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy