我正在阅读有关事务如何在 python 的 MySQLdb
中工作的内容。在 this tutorial ,它说:
In Python DB API, we do not call the BEGIN statement to start a transaction. A transaction is started when the cursor is created.
所以下面一行:
cur = con.cursor()
隐式启动事务。它还说:
We must end a transaction with either a commit() or a rollback() method.
我的理解是否正确,MySQLdb
总是使用事务,并且没有办法关闭这种行为?强制用户将所有查询包含在事务中似乎有点奇怪。如果是这样 - 有什么解释吗?
最佳答案
我不是这方面的专家,但我认为您在这里寻找的功能是自动提交。 这会自动提交您的命令。因此您应该能够跳过“BEGIN”语句。
这是一个页面: http://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html
启动 python MySQLdb 实例时进行设置:
conn=MySQLdb.connect(host='blah', autocommit=True)
然后您应该拥有一个不用担心事务的连接。
某些存储引擎不使用事务,因此如果您使用事务,则无需担心此细节: en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines
但是,如果您的插入\更新中途失败,它们可能会遇到问题!
关于没有事务的 python-mysqldb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121284/