2014-06-09 90 views
1

我在阅读关于python的MySQLdb中的交易如何工作。在this tutorial,它说:没有交易的python-mysqldb

在Python DB API,我们不叫BEGIN语句开始 交易。在创建游标时开始事务。

因此,一个下面一行:

cur = con.cursor() 

隐式启动事务。它还表示:

我们必须通过commit()或rollback()方法结束事务。

难道我理解正确的话,那MySQLdb使用事务总是,有没有办法把这种行为了吗?强制用户在交易中包含所有查询似乎有点奇怪。如果是这样 - 有什么解释为什么?

回答

1

我不是一个巨大的专家,但我认为你在这里寻找的功能是autocommit。 这会自动提交你的命令。因此,您应该可以跳过'BEGIN'语句。

这里有一个关于它的页面:

conn=MySQLdb.connect(host='blah', autocommit=True) 

你应该再有一个不担心交易的连接: http://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

您,当您启动了Python MySQLdb的实例此设置。

一些存储引擎不使用事务,所以如果你使用一个,你不需要担心这个细节: en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines

然而,他们可以遇到问题如果您的插入\更新中途失败!

+0

感谢您的提示,但是这并没有真正回答这个问题,即:MySQLdb是否总是启动事务并且无法关闭它。 – ducin

+0

取决于您的存储引擎。如果你选择不同的存储引擎,你会没事的: –