如何在sqlalChemy.Engine.Connection中设置autoCommit=1
问题描述
在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
。
Engine
,Executable
上提供的生成性Connection.execution_options()
方法,使用将打开或关闭选定作用域的自动提交的"autoCommit"标志,可以完全控制"自动提交"行为。例如,表示提交的存储过程的text()
构造可能会使用它,以便SELECT语句将发出COMMIT:
engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
相关文章