autocommit
:
sessionmaker(bind=engine, autocommit=False) # autocommit default False
MySQL中的 autocommit
:
SET AUTOCOMMIT=0 -- autocommit default 1
我想知道,这两个autocommits是一回事吗?即SQLAlchemy通过等同于autocommit
的东西将SET AUTOCOMMIT
状态传递给MySQL?
答案 0 :(得分:0)
根据the docs,这些并不相同(尽管它们达到了相同的结果)。
SQLAlchemy 始终使用事务,因此它始终在MySQL上设置AUTOCOMMIT=0
。但是,如果您设置autocommit=True
,只要您对数据进行更改,它就会自动调用.commit()
。
这是以这种方式完成的,因为每个数据库都以不同的方式进行自动提交(如果有的话),并且SQLAlchemy尝试在它们之间保持一致的行为。