【问题标题】:python-mysqldb without transactions没有事务的python-mysqldb
【发布时间】:2014-06-09 13:24:02
【问题描述】:

我正在阅读有关交易如何在 python 的MySQLdb 中工作的信息。在this tutorial 中,它说:

在 Python DB API 中,我们不调用 BEGIN 语句来启动一个 交易。创建游标时开始事务。

所以下面一行:

cur = con.cursor()

隐式启动事务。它还说:

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

我是否理解正确,MySQLdb 使用事务总是 并且没有办法关闭此行为?强制用户将所有查询包含在事务中似乎有点奇怪。如果是这样 - 有什么解释为什么会这样吗?

【问题讨论】:

    标签: python mysql transactions mysql-python


    【解决方案1】:

    我不是这方面的专家,但我认为您在这里寻找的功能是自动提交。 这会自动提交您的命令。因此,您应该能够跳过“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

    但是,如果您的插入\更新中途失败,它们可能会遇到问题!

    【讨论】:

    • 感谢您的提示,但这并不能真正回答问题,即:MySQLdb 是否总是启动事务并且您无法将其关闭。
    • 取决于您的存储引擎。如果你选择不同的存储引擎,你会没事的:
    猜你喜欢
    • 2012-02-03
    • 2013-02-02
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多