Python-MySQL 执行事务

2025年9月3日 | 阅读 4 分钟

数据库事务被定义为作为一个单一单元执行的不同操作的集合,这些操作要么全部执行,要么一个也不执行。简单来说,为单一操作发生的所有操作都必须完成;如果其中任何一个操作失败,整个过程将被停止。

接下来,它将所有内容回滚到事务发生之前的状态。此功能在所有事务的安全性中扮演着重要角色,并维护各种系统的数据完整性、一致性和可靠性。

在本教程中,我们将通过示例介绍 commit() 和 rollback() 方法,以处理不同的数据库事务。

事务 ACID 属性

数据库事务遵循一组称为 ACID 属性的属性。这些属性很重要,因为它们保护事务的安全性、准确性和一致性,并有助于以可靠的方式管理更改,即使发生错误或故障也能保持数据完整性。

  1. 原子性(Atomicity):事务要么完成,要么什么都不发生。如果一个事务包含 4 个查询,那么这些查询必须全部执行,或者全部不执行。
  2. 一致性(Consistency):数据库在事务开始之前必须是一致的,并且在事务完成后数据库也必须是一致的。
  3. 隔离性(Isolation):事务的中间结果在当前事务之外不可见。
  4. 持久性(Durability):一旦事务提交,其影响是持久的,即使在系统故障之后也是如此。

Python commit() 方法

Python 提供了 commit() 方法,它确保对数据库所做的更改能够一致地发生。如果不使用 commit() 方法,所有更改都不会保存,并且一旦连接关闭,所有更新的数据都将丢失。

使用 commit() 方法的语法如下。

语法

Python rollback() 方法

rollback() 方法用于撤消对数据库所做的更改。此方法很有用,因为如果在数据库操作期间发生错误,我们可以回滚该事务以维护数据库一致性。如果出现开发人员对数据库所做的更改不满意,或者由于任何原因事务失败的情况,则使用 rollback 方法来获取通过 commit 方法更改的原始数据。

调用 rollback() 方法的语法如下。

语法

关闭连接

一旦我们完成了所有与数据库相关的操作,就需要关闭数据库连接。在 Python 中,使用 close() 方法断开数据库连接。

语法

使用 close() 方法的语法如下。

让我们通过一个例子来理解所有这三个概念。

示例

输出

Python MySQL Performing Transactions

说明

在上述程序中,执行 UPDATE 查询将地址从 Goa 更改为 Kolkata 后,我们使用了 db_connection.commit() 方法将更新后的数据永久保存到数据库中。如果在执行过程中发生任何错误,except 块会调用 db_connection.rollback(),这会取消任何未提交的更改并将数据库恢复到其先前的状态。最后,我们使用了 db_cursor.close() 和 db_connection.close() 来释放资源并正确关闭与数据库的连接。

结论

数据库事务确保对数据库的所有操作都正确执行,同时维护系统的安全性、完整性和准确性。ACID 属性:原子性、一致性、隔离性和持久性在安全事务管理中扮演着重要角色。这些方法有助于以可靠的方式管理对数据库的更改,即使在发生错误或故障的情况下也能确保数据完整性。

Python MySQL 提供了 commit() 方法来永久保存更改,以及 rollback() 方法在出现问题时撤消更改。这有助于开发人员安全有效地处理数据。一旦完成所有操作,close() 方法有助于关闭数据库连接,以确保最佳资源使用并防止潜在错误。

Python-MySQL 执行事务常见问题解答

1. 数据库事务的主要目的是什么?

数据库事务确保不同的操作被视为一个单一单元,其中所有操作要么全部执行,要么一个也不执行。这有助于维护数据的完整性和准确性。

2. 如果我们在程序中不使用 commit() 方法会发生什么?

如果我们不使用 commit() 方法,我们在程序中所做的任何更改都不会保存到数据库中,并且如果连接关闭,所有更改都将永久丢失。

3. 关闭数据库连接是必要的吗?

关闭连接是一种良好的实践,因为它会释放资源并确保数据库不会不必要地保持打开状态。

4. 在发生故障时,使用哪种方法可以还原更改?

在发生任何类型的故障时,使用 rollback() 方法可以还原更改。


下一主题Python Tkinter