Python操作MySQL实现银行转账

1 下载量 185 浏览量 更新于2024-08-30 收藏 95KB PDF 举报
本文主要介绍了如何使用Python操作MySQL数据库,特别是如何进行简单的银行转账操作,包括MySQL-python的安装、Python数据库编程API规范、SQL基本操作以及数据库事务的使用。 一、MySQL-python的安装与Python数据库API 在开始Python操作MySQL之前,首先需要安装MySQL-python的驱动,通常通过pip命令来安装,例如`pip install MySQL-python`。安装完成后,可以使用Python编写程序与MySQL服务器建立连接。 二、Python连接MySQL的API规范 1. 数据库连接对象(connection):通过`MySQLdb.Connect()`函数创建,需要提供包括主机名、端口、用户名、密码、数据库名和字符集等参数。连接对象提供了几个关键方法: - `cursor()`:创建游标对象,用于执行SQL命令。 - `commit()`:提交当前事务,确保对数据库的修改保存。 - `rollback()`:回滚当前事务,撤销所有未提交的修改。 - `close()`:关闭连接,释放资源。 2. 数据库游标对象(cursor):游标是执行SQL语句的对象,它提供了`execute()`方法来执行SQL命令,以及获取结果的方法: - `execute(op[, args])`:执行SQL操作,可以包含参数。 - `fetchone()`:获取结果集中的下一行数据。 - `fetchmany(size)`:获取多行数据。 - `fetchall()`:获取所有剩余的数据。 - `rowcount`:返回上一次执行操作影响的行数。 - `close()`:关闭游标,释放资源。 三、SQL基本操作 - SELECT:查询数据,如`sql = "SELECT * FROM 表名 WHERE 条件"`。 - INSERT:插入数据,如`sql = "INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2)"`。 - UPDATE:更新数据,如`sql = "UPDATE 表名 SET 字段 = 新值 WHERE 条件"`。 - DELETE:删除数据,如`sql = "DELETE FROM 表名 WHERE 条件"`。 四、数据库事务 事务是数据库操作的基本单位,保证了操作的原子性和一致性。在Python中,可以通过`commit()`和`rollback()`方法控制事务: - `conn.commit()`:正常结束事务,保存所有更改。 - `conn.rollback()`:异常结束事务,撤销所有未提交的更改。 五、模拟银行转账系统 在银行转账操作中,事务尤为重要,因为转账涉及到两个账户,如果中间出现错误,必须保证要么全部完成,要么全部撤销。以下是一个简单的银行转账代码框架: ```python import MySQLdb # 创建连接 conn = MySQLdb.connect(host="localhost", user="username", passwd="password", db="bank_db", charset="utf8") cursor = conn.cursor() # 开始事务 try: # 执行转账操作(假设已有账户表和余额字段) sql = "UPDATE accounts SET balance = balance - %s WHERE account_id = %s" cursor.execute(sql, (amount, from_account_id)) sql = "UPDATE accounts SET balance = balance + %s WHERE account_id = %s" cursor.execute(sql, (amount, to_account_id)) # 提交事务 conn.commit() except Exception as e: # 发生错误,回滚事务 print("转账失败:", e) conn.rollback() # 关闭游标和连接 cursor.close() conn.close() ``` 在这个例子中,我们先减少转出账户的余额,再增加接收账户的余额。如果在这两个操作之间发生错误,`rollback()`会回滚之前的更改,防止数据不一致。 通过以上步骤,你可以使用Python和MySQL实现一个基本的银行转账系统,确保数据的一致性和完整性。记得在实际应用中考虑错误处理和安全性措施,比如输入验证、SQL注入防护等。