pymysql操作MySQL数据库

张开发
2026/4/10 13:53:23 15 分钟阅读

分享文章

pymysql操作MySQL数据库
一、基础准备1. 驱动安装Python 操作 MySQL 需依赖专用数据库连接驱动主流为mysql-connector-python官方驱动与PyMySQL纯 Python 实现兼容性好二者功能一致任选其一安装即可。安装命令为pip install 驱动名称例如安装PyMySQL执行pip install PyMySQL。2. 核心概念连接对象建立 Python 与 MySQL 服务器的通信通道负责身份验证、连接管理是所有数据库操作的基础操作完成后需关闭以释放资源。游标对象基于连接创建用于执行 SQL 语句、获取查询结果类似操作数据库的 “指针”执行完操作后建议关闭。事务保证数据库操作的原子性一组操作要么全部成功提交要么全部失败回滚避免数据不一致。二、数据库连接与关闭1. 建立连接连接 MySQL 需传入服务器地址、端口、用户名、密码、目标数据库名及字符集等关键参数创建连接对象后可通过该对象创建游标。举例使用PyMySQL连接本地 MySQL 的test_db数据库参数包含本地地址localhost、默认端口3306、用户名root、密码123456、数据库名test_db字符集设为utf8mb4以支持特殊字符连接成功后打印提示。2. 关闭连接与游标操作结束后需先关闭游标再关闭数据库连接避免资源泄漏。举例执行游标对象.close()关闭游标再执行连接对象.close()关闭连接可搭配异常处理确保无论操作是否成功资源都能正常释放。三、数据库与表操作1. 创建数据库通过游标执行CREATE DATABASE语句创建数据库可指定字符集。举例创建名为school的数据库字符集设为utf8mb4执行语句后提交事务确保创建生效。2. 创建表先切换到目标数据库再执行CREATE TABLE语句定义表结构包含字段名、数据类型、约束等。举例在school库中创建students表包含自增主键id、字符串类型name非空、整数类型age、字符串类型class_name执行后提交事务完成创建。3. 删除数据库 / 表执行DROP DATABASE或DROP TABLE语句删除对象操作不可逆需谨慎。举例删除students表执行DROP TABLE IF EXISTS students加IF EXISTS避免表不存在时报错提交后生效。四、数据增删改查CRUD1. 新增数据INSERT执行INSERT INTO语句添加数据支持单条或批量新增新增后需提交事务。举例向students表单条插入数据指定name、age、class_name字段对应值批量插入可传入多组数据通过游标一次执行提升效率。2. 查询数据SELECT执行SELECT语句获取数据通过游标fetch系列方法读取结果。fetchone()获取单条数据fetchall()获取所有数据fetchmany(n)获取 n 条数据。举例查询students表中age18的学生姓名和年龄用fetchall()获取所有结果并遍历打印也可查询所有字段或对结果排序、分页。3. 修改数据UPDATE执行UPDATE语句修改数据需搭配WHERE子句指定修改范围避免全表更新。举例将students表中name为 “张三” 的学生age修改为 20执行后提交事务可通过查询验证修改结果。4. 删除数据DELETE执行DELETE FROM语句删除数据同样需用WHERE子句限定条件。举例删除students表中age16的学生数据提交后生效若不加WHERE条件会删除表中所有数据。五、事务管理事务用于保证数据操作的一致性默认情况下 MySQL 连接非自动提交需手动控制。操作流程为开启事务连接创建后默认开启→ 执行增删改操作 → 操作成功则commit()提交失败则rollback()回滚。举例执行两条新增数据语句若过程中出现异常执行回滚两条数据都不会插入若无异常则提交数据永久保存。六、异常处理操作数据库时可能出现连接失败、SQL 语法错误、数据类型不匹配等异常需通过try-except捕获处理常见异常类有OperationalError连接 / 执行错误、ProgrammingErrorSQL 语法错误、IntegrityError数据约束错误等。举例在数据库操作代码外层包裹try块捕获不同类型异常并打印对应错误信息最后在finally块中关闭游标和连接确保资源释放。七、注意事项敏感信息如数据库密码避免硬编码可通过配置文件、环境变量存储提升安全性。数据操作时优先使用参数化语句避免 SQL 注入风险不要直接拼接 SQL 字符串。连接与游标使用后及时关闭长时间不关闭会占用服务器资源影响性能。批量操作时优先使用批量执行方法减少与数据库的交互次数提升效率。生产环境中建议使用连接池管理数据库连接避免频繁创建、关闭连接的开销。

更多文章