我在工作中使用SQLAlchemy,代码如下:
with session.begin(subtransactions=True):
order = Order(**data)
session.add(order)
session.close()
执行代码时,MySQL中没有任何新记录。如果我将代码更改为:
with session.begin(subtransactions=True):
order = Order(**data)
session.add(order)
session.commit()
session.close()
将插入新记录。
我认为记录是由SQLAlchemy缓存的,但为什么我关闭会话并且会话不会将所有数据刷新到数据库中?
即使我使用session.commit()
语句with
,我也想知道我是否应session.begin()
明确地说明。因为我读了SQLAlchemy并且发现我是否使用with
语句,如果没有异常引发或者回滚,如果引发异常,它应该提交我的所有数据。