如何在sqlalchemy.engine.Connection中设置autocommit = 1

时间:2014-11-03 15:49:38

标签: python sqlalchemy

在sqlalchemy中,我建立连接:

 conn = engine.connect()

我发现这将在我的mysqld日志中设置autocommit = 0。 现在我想设置autocommit = 1,因为我不想在事务中查询。

有办法做到这一点吗?

5 个答案:

答案 0 :(得分:4)

你的dialect是什么用于mysql连接?

您可以将 <div class="contener"> <span class="editableLabel"> <span class="contentTrimmed">aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn</span> </span> </div>设置为autocommit来解决问题,例如True

答案 1 :(得分:3)

来自The SQLAlchemy documentation: Understanding autocommit

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

“自动提交”功能仅在未声明Transaction时生效。这意味着该功能通常不与ORM一起使用,因为默认情况下Session对象始终保持正在进行的Transaction

使用“{1}},Connection.execution_options()Connection提供的生成式Engine方法,使用”自动提交“标志可以完全控制”自动提交“行为打开或关闭所选范围的自动提交。例如,表示提交的存储过程的Executable构造可能会使用它,以便SELECT语句将发出COMMIT:

text()

答案 2 :(得分:3)

您可以使用:

from sqlalchemy.sql import text

engine = create_engine(host, user, password, dbname)
engine.execute(text(sql).execution_options(autocommit=True)

答案 3 :(得分:1)

如果要使用flask / django为python应用程序配置sqlalchemy,则可以这样创建引擎:

# Configure the SqlAlchemy part of the app instance
app.config['SQLALCHEMY_DATABASE_URI'] = conn_url


session_options = {
    'autocommit': True
}

# Create the SqlAlchemy db instance
db = SQLAlchemy(app, session_options=session_options)

答案 4 :(得分:0)

可以使用autocommit方法中的execution_option()选项完成此操作:

engine.execute("UPDATE table SET field1 = 'test'").execution_options(autocommit=True))

此信息在Autocommit上的documentation

中提供