在sqlalchemy中,我建立连接:
conn = engine.connect()
我发现这将在我的mysqld日志中设置autocommit = 0。 现在我想设置autocommit = 1,因为我不想在事务中查询。
有办法做到这一点吗?
答案 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
中提供