不使用事务的python-mysqldb
我在学习Python的MySQLdb
是如何处理事务的。在这个教程中,它提到:
在Python的数据库API中,我们并不需要调用BEGIN语句来开始一个事务。事务是在创建游标时自动开始的。
所以接下来的这一行:
cur = con.cursor()
会隐式地开始一个事务。它还提到:
我们必须用commit()或rollback()方法来结束一个事务。
我理解得对吗?也就是说MySQLdb
总是使用事务,并且没有办法关闭这种行为?强制用户把所有查询都放在事务里似乎有点奇怪。如果真是这样,有什么解释吗?
1 个回答
2
我不是这方面的专家,但我觉得你想要的功能是自动提交(autocommit)。这个功能会自动提交你的命令,所以你可以省略 '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
不过,如果你的插入或更新操作在中途失败,可能会遇到一些问题!