没有事务的 python-mysqldb

标签 python mysql transactions mysql-python

我正在阅读有关事务如何在 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/

相关文章:

python - 在 Mac 上 - pyodbc 不会从 mysql 获取长列

python - 如何在没有数据类型的情况下从 DataFrame 打印字符串值

python - 如何在函数中使用 *args?

android - Firebase runTransaction 不工作 - MutableData 为空

python - 为一个完整的模块定义 Python 装饰器

php - 如何制作mysqli准备语句并获取结果?

php - Laravel 根据另一个表中的 user_id 获取用户名

javascript - 离线使用谷歌地球(或 map )

java - 在 JPA/EclipseLink EntityManager 中更改隔离级别后进行清理

mysql/aurora 没有立即看到已提交事务的结果