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

izu*_*ual 7 python sqlalchemy

在sqlalchemy中,我进行连接:

 conn = engine.connect()
Run Code Online (Sandbox Code Playgroud)

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

有没有办法做到这一点?

Luc*_*doy 6

从SQLAlchemy文档中:了解自动提交

conn = engine.connect()
conn.execute("INSERT INTO users VALUES (1, 'john')")  # autocommits
Run Code Online (Sandbox Code Playgroud)

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

的“自动提交”的行为完全控制可使用生成Connection.execution_options()设置在方法Connection,Engine,Executable,采用了“自动提交”标志,该标志将开启或关闭自动提交选定范围。例如,text()代表提交的存储过程的构造可能会使用它,以便SELECT语句将发出COMMIT:

engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
Run Code Online (Sandbox Code Playgroud)


mer*_*tah 6

您可以使用此:

from sqlalchemy.sql import text

engine = create_engine(host, user, password, dbname)
engine.execute(text(sql).execution_options(autocommit=True))
Run Code Online (Sandbox Code Playgroud)


sti*_*zhl 6

mysql连接的方言是什么?

您可以设置autocommit来True解决问题,这样的mysql+mysqldb://user:password@host:port/db?charset=foo&autocommit=true