在 Python 中使用 MySQL 存储过程实现事务
在 Python 中使用 MySQL 存储过程实现事务需要以下步骤:
1. 连接数据库:使用 Python 的 mysql-connector 必须先安装并导入该模块,通过 connect() 方法连接数据库。
import mysql.connector # 连接数据库 cnx = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name')
- 创建存储过程:使用 MySQL Workbench 或者命令行创建存储过程,存储过程的语法和流程与普通的 SQL 语句基本相同。
CREATE PROCEDURE transfer_funds( IN sender_id INT, IN receiver_id INT, IN amount DECIMAL(10, 2) ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; END; START TRANSACTION; UPDATE accounts SET balance = balance - amount WHERE id = sender_id; UPDATE accounts SET balance = balance + amount WHERE id = receiver_id; COMMIT; END;
- 调用存储过程:我们可以在 Python 中使用存储过程的名称和参数调用该存储过程。
# 调用存储过程 cursor = cnx.cursor() cursor.callproc('transfer_funds', [1, 2, 100]) cnx.commit()
完整代码如下:
import mysql.connector try: # 连接数据库 cnx = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name') # 创建游标 cursor = cnx.cursor() # 调用存储过程 cursor.callproc('transfer_funds', [1, 2, 100]) cnx.commit() # 关闭游标和连接 cursor.close() cnx.close() except mysql.connector.Error as err: print('存储过程调用失败:', err.msg) finally: # 关闭游标和连接 cursor.close() cnx.close()
以上就是在 Python 中使用 MySQL 存储过程实现事务的详细步骤和代码演示,通过调用 MySQL 存储过程来实现事务可以确保多个 SQL 语句的原子性,避免了并发时的数据竞争和数据一致性问题,提高了数据库的可靠性和稳定性。
相关文章