在爬虫开发中,爬取到的数据如何高效、安全地存储是一个关键问题。关系型数据库凭借其结构化存储、事务支持等特性,成为很多场景下的首选。本文将带你全面掌握 Python 操作 MySQL 的利器 ——PyMySQL,从安装配置到实战案例,让你轻松实现爬虫数据的 MySQL 存储。
一、认识 PyMySQL:为什么选择它?
关系型数据库通过二维表存储数据,每一列是字段,每一行是记录,多个表组成数据库。常见的关系型数据库有 SQLite、MySQL、Oracle 等,而在 Python 中操作 MySQL,PyMySQL 是最佳选择之一。
PyMySQL 是 Python 连接 MySQL 数据库的接口,实现了 Python 数据库 API v2.0,且是纯 Python 的 MySQL 客户端库。它主要用于替代 Python2 中的 MySQLDB 库,完美支持 Python3,这也是我们选择它的核心原因。
二、PyMySQL 核心操作四步法
使用 PyMySQL 操作 MySQL 数据库,只需牢记四个核心步骤,无论增删改查都离不开这个流程:
- 创建数据库连接对象:建立 Python 与 MySQL 的桥梁
- 获取游标对象:执行 SQL 语句的工具
- 执行 SQL 语句:实现具体的数据操作
- 提交事务并关闭连接:确保数据安全并释放资源
2.1 连接对象(connect)的核心方法
连接对象是 Python 与 MySQL 沟通的桥梁,其常用方法如下:
-
cursor()
cursor () 方法的作用是创建并返回一个游标对象。借助这个游标对象,能够执行 SQL 语句,还可以获取查询结果。其语法格式为:cursor = connection.cursor()
-
commit()
commit () 方法用于提交当前事务。在对数据库进行插入、更新、删除等操作之后,需要调用该方法来确认更改。语法是:connection.commit()
-
rollback()
rollback () 方法的功能是回滚当前事务。当执行过程中出现错误时,可以使用此方法撤销之前的操作。语法为:connection.rollback()
-
close()
close () 方法的用途是关闭数据库连接。在完成数据库操作后,应当调用该方法释放资源。语法是:connection.close()
三、手把手教你创建数据库连接
创建数据库连接需要使用pymysql.connect()
函数,通过参数指定数据库信息。常用参数如下:
-
Host(主机)
- 类型为字符串,用于指定 MySQL 服务器的主机名或 IP 地址。
- 若 MySQL 服务器安装在本地,可填写
127.0.0.1
或者localhost
。
-
Port(端口)
- 类型是数字,用于指定连接 MySQL 服务器的端口号。
- MySQL 服务器的默认端口是
3306
,不过具体端口可能会因服务器配置而有所不同。
-
User(用户名)
- 类型为字符串,是用于登录 MySQL 服务器的用户名。
- 这个用户名需要在 MySQL 服务器中已经存在,并且拥有访问指定数据库的权限。
-
Password(密码)
- 类型是字符串,是对应用户名的登录密码。
- 要确保密码的准确性,否则将无法成功连接到数据库。
-
Db(数据库名)
- 类型为字符串,指定要连接的具体数据库名称。
- 该数据库必须在 MySQL 服务器中已经创建。
-
Charset(字符集)
- 类型是字符串,用于设置数据库连接的字符集。
- 推荐使用
"utf8"
或者"utf8mb4"
,这样可以避免中文等非 ASCII 字符出现乱码问题。
四、数据库表操作全攻略
掌握了基本连接方法后,我们来学习如何对数据库表进行增删改查操作。
4.1 创建表
4.2 插入数据
插入数据需要注意事务处理,确保数据一致性。推荐使用占位符%s
传递参数,避免 SQL 注入风险。
4.3动态字典插入法(灵活应对字段变化):
4.4 更新数据
4.5 删除数据
4.6 查询数据
五、总结与技巧
- 事务处理:PyMySQL 默认开启事务,增删改操作必须通过
commit()
提交,失败时用rollback()
回滚 - 参数化查询:始终使用
%s
占位符传递参数,避免 SQL 注入 - 资源释放:操作完成后务必关闭游标和连接,释放资源
- 批量操作:使用
executemany()
进行批量插入 / 更新,效率更高 - 字符集设置:连接时指定
charset="utf8"
,避免中文乱码
掌握 PyMySQL 后,你可以轻松将爬虫数据存储到 MySQL 中,为后续的数据分析和应用开发打下基础。快去试试爬取自己感兴趣的网站,用 PyMySQL 存储数据吧!