SQLAlchemy:中的autocommit
sessionmaker(bind=engine, autocommit=False) # autocommit default False
MySQL中的autocommit
:
SET AUTOCOMMIT=0 -- autocommit default 1
我想知道,这两个自动提交是同一件事吗?即SQLAlchemy通过类似于SET AUTOCOMMIT
的东西将autocommit
状态传递给MySQL?
根据文档,这些并不相同(尽管它们实现了相同的结果)。
SQLAlchemy总是使用事务,所以它总是在MySQL上设置AUTOCOMMIT=0
。但是,如果设置了autocommit=True
,则每当您更改数据时,它都会自动调用.commit()
。
这样做是因为每个数据库的自动提交方式不同(如果有的话),并且SQLAlchemy试图在它们之间保持一致。