
使用 pymysql 库来操作 MySQL 数据库是 Python 开发中常见的一种方式。pymysql 是一个纯 Python 实现的 MySQL 客户端库,支持 Python 3.x 版本,功能强大且易于使用。下面我将详细介绍如何使用 pymysql 来连接、查询、插入、更新和删除 MySQL 数据库中的数据。
安装 PyMySQL
在使用 pymysql 之前,你需要确保已安装该库。可以通过 pip 来安装:
pip install pymysql连接数据库
在使用 pymysql 操作数据库之前,首先要建立与数据库的连接。下面的代码展示了如何连接到数据库:
import pymysql # 打开数据库连接 connection = pymysql.connect( host=localhost, # 数据库地址 user=root, # 用户名 password=password,# 密码 database=mydb, # 要连接的数据库名 charset=utf8mb4, # 编码设置 ) # 创建一个游标对象 cursor = connection.cursor()执行 SQL 查询
一旦连接建立,就可以使用游标对象来执行 SQL 查询。pymysql 支持多种 SQL 执行方式,包括查询、插入、更新和删除数据。
1. 查询数据
sql = "SELECT * FROM my_table" cursor.execute(sql) # 获取所有记录 records = cursor.fetchall() for record in records: print(record)2. 插入数据
插入数据时,可以使用 execute() 方法,并且可以通过参数化查询来避免 SQL 注入风险。
sql = "INSERT INTO my_table (name, age) VALUES (%s, %s)" values = ("John Doe", 28) try: cursor.execute(sql, values) connection.commit() # 提交事务 except Exception as e: connection.rollback() # 回滚事务 print(f"Error: {e}")3. 更新数据
更新某条数据时,需指定条件。
sql = "UPDATE my_table SET age = %s WHERE name = %s" values = (30, "John Doe") try: cursor.execute(sql, values) connection.commit() except Exception as e: connection.rollback() print(f"Error: {e}")4. 删除数据
删除数据时同样需要小心,特别是条件的书写。
sql = "DELETE FROM my_table WHERE name = %s" value = ("John Doe",) try: cursor.execute(sql, value) connection.commit() except Exception as e: connection.rollback() print(f"Error: {e}")处理事务
pymysql 默认开启事务控制。这意味着你对数据库的所有变更操作(插入、更新、删除)必须明确提交(commit)才能生效,否则可以选择回滚(rollback)撤销变更。
参数化查询
为了防范 SQL 注入攻击,始终建议使用参数化查询来执行 SQL 语句。pymysql 支持参数化查询,你可以使用 execute() 函数的第二个参数来传递参数值。
结果集操作
执行查询后,可以通过 fetchall(), fetchone(), fetchmany(n) 三种方法方法来获取查询结果。
fetchall():获取全部结果。 fetchone():获取下一行结果。 fetchmany(size):获取指定数量的结果。关闭连接
操作结束后,务必关闭游标和连接,以释放数据库资源。
cursor.close() connection.close()异常处理
在执行数据库操作时,难免会遇到异常。因此,*在操作数据库的过程中加入异常处理机制。
try: # 数据库操作 except pymysql.MySQLError as e: print(f"Error: {e}") finally: cursor.close() connection.close()连接池
对于大规模应用,为每个请求都单独打开一个新的数据库连接可能会比较耗资源。可以考虑使用连接池库如 DBUtils 来提高数据库连接的管理能力。
总结
pymysql 库提供了对 MySQL 数据库的强大支持,能够很好地与 Python 集成,支持多种操作数据库的方式,包括基本的增删改查。同时,通过使用有效的异常处理、参数化查询以及连接池等技术,可以使你的数据库代码更为安全和高效。