我正在使用aiomysql(https://github.com/aio-libs/aiomysql)并且对未关闭的事务和锁定行有一些问题。我在我的应用程序中使用AIO连接池。 我没有使用SA上下文管理器进行交易。
我的问题:
答案 0 :(得分:0)
您需要确保在没有提交的情况下进行回滚,因此提交必须位于try块内。但是select不需要提交。
如果您的连接上的autocommit为True,则每次插入或更新均被视为单个事务并隐式提交。如果autocommit为False,则您将自动获取事务,并且必须在插入后提交。如果autocommit为false,则无需调用START TRANSACTION。
如果您需要调用START TRANSACTION,请使用此处记录的conn.begin():
https://aiomysql.readthedocs.io/en/latest/connection.html#connection
如果您有多个必须同时成功或回滚的或有更新,则使用MySQL事务。例如,第二次更新失败的银行转帐需要回滚:
您可以在aiomysql github中找到一个交易示例。