如何在sqlalChemy.Engine.Connection中设置autoCommit=1

2022-02-22 00:00:00 python sqlalchemy

问题描述

在sqlalChemy中,我建立连接:

 conn = engine.connect()
我发现这将在我的mysqld日志中设置autoCommit=0。 现在我想设置autoCommit=1,因为我不想在事务中查询。

有办法做到这一点吗?


解决方案

发件人The SQLAlchemy documentation: Understanding autocommit

conn = engine.connect()
conn.execute("INSERT INTO users VALUES (1, 'john')")  # autocommits

只有在没有以其他方式声明Transaction的情况下,"自动提交"功能才有效。这意味着该功能通常不与ORM一起使用,因为默认情况下Session对象始终维护正在进行的Transaction

使用<[2-4],EngineExecutable上提供的生成性Connection.execution_options()方法,使用将打开或关闭选定作用域的自动提交的"autoCommit"标志,可以完全控制"自动提交"行为。例如,表示提交的存储过程的text()构造可能会使用它,以便SELECT语句将发出COMMIT:

engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))

相关文章