首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【愚公系列】《Python网络爬虫从入门到精通》039-MySQL数据库

【愚公系列】《Python网络爬虫从入门到精通》039-MySQL数据库

原创
作者头像
愚公搬代码
发布于 2025-09-20 09:52:15
发布于 2025-09-20 09:52:15
4590
举报
震撼头图
震撼头图

💎 行业认证·权威头衔

  • ✔ 华为云天团核心成员 :特约编辑/云享专家/开发者专家/产品云测专家
  • ✔ 开发者社区全满贯 :CSDN双料专家/阿里云签约作者/腾讯云内容共创官
  • ✔ 技术生态共建先锋 :横跨鸿蒙/云计算/AI等前沿领域的技术布道者

🏆 荣誉殿堂

  • 🎖 连续三年蝉联 "华为云十佳博主" (2022-2024)
  • 🎖 双冠加冕 CSDN"年度博客之星TOP2" (2022&2023)
  • 🎖 十余个技术社区 年度杰出贡献奖 得主

📚 知识宝库

◾ 编程语言:.NET/Java/Python/Go/Node...

◾ 移动生态:HarmonyOS/iOS/Android/小程序

◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙

◾ 游戏开发:Unity3D引擎深度解析

🚀前言

在网络爬虫的世界中,数据的存储与管理是成功的关键环节。随着爬虫技术的不断发展,抓取的数据量也日益增大,如何高效、可靠地存储这些数据成为了开发者必须面对的挑战。MySQL数据库,作为一种广泛使用的关系型数据库,以其强大的数据管理能力和灵活的查询功能,成为了爬虫项目中最受欢迎的选择之一。

我们将深入探讨如何在网络爬虫中使用MySQL数据库。我们将从MySQL的基本概念入手,逐步引导你了解如何在Python中连接和操作MySQL数据库,包括创建数据库、设计数据表、插入和查询数据等实用技巧。通过具体的示例,你将掌握如何将抓取到的数据高效地存储到MySQL中,并能够灵活地进行数据查询和分析。

🚀一、MySQL数据库

🔎1.安装 PyMySQL

步骤说明:

  1. 背景需求:
    • MySQL 以独立进程运行,需通过 Python 驱动连接。
    • PyMySQL 是符合 Python DB-API 规范的轻量级 MySQL 驱动。
  2. 安装方法:undefined在命令行中执行以下命令: pip install PyMySQL
    • 安装完成后可通过 import pymysql 验证是否成功。

🔎2.连接数据库

核心步骤与代码示例:

代码语言:python
复制
import pymysql  

# 打开数据库连接(参数顺序:主机/IP、用户名、密码、数据库名)  
db = pymysql.connect(  
    host="localhost",  
    user="root",  
    password="root",  
    database="mrsoft"  
)  

# 创建游标对象  
cursor = db.cursor()  

# 执行 SQL 查询(获取数据库版本)  
cursor.execute("SELECT VERSION()")  
data = cursor.fetchone()  
print("Database version: %s" % data)  

# 关闭连接  
db.close()  

注意事项:

  • connect() 参数需与本地 MySQL 配置一致(如用户名、密码、数据库名)。
  • 操作结束后必须调用 close() 释放资源。

🔎3.创建数据表

SQL 语句与代码实现:

  1. 删除旧表(若存在):
代码语言:sql
复制
DROP TABLE IF EXISTS books;  
  1. 创建新表语句:
代码语言:sql
复制
CREATE TABLE books (  
    id INT(8) NOT NULL AUTO_INCREMENT,  
    name VARCHAR(50) NOT NULL,  
    category VARCHAR(50) NOT NULL,  
    price DECIMAL(10,2) DEFAULT NULL,  
    publish_time DATE DEFAULT NULL,  
    PRIMARY KEY (id)  
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;  
  1. Python 代码实现:
代码语言:python
复制
import pymysql  

db = pymysql.connect(  
    host="localhost",  
    user="root",  
    password="root",  
    database="mrsoft"  
)  
cursor = db.cursor()  

# 删除旧表  
cursor.execute("DROP TABLE IF EXISTS books")  

# 创建新表  
sql = """  
    CREATE TABLE books (  
        id INT(8) NOT NULL AUTO_INCREMENT,  
        name VARCHAR(50) NOT NULL,  
        category VARCHAR(50) NOT NULL,  
        price DECIMAL(10,2) DEFAULT NULL,  
        publish_time DATE DEFAULT NULL,  
        PRIMARY KEY (id)  
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8  
"""  
cursor.execute(sql)  
db.close()  

关键点:

  • 字段 AUTO_INCREMENT 需正确拼写。
  • DECIMAL(10,2) 表示最多 10 位数字,其中 2 位小数。
  • 指定 CHARSET=utf8 支持中文字段。

🔎4.操作 MySQL 数据表

批量插入数据示例:

代码语言:python
复制
import pymysql  

db = pymysql.connect(  
    host="localhost",  
    user="root",  
    password="root",  
    database="mrsoft",  
    charset="utf8"  # 防止中文乱码  
)  
cursor = db.cursor()  

# 数据列表(多组元组)  
data = [  
    ("零基础学 Python", "Python", 79.80, "2018-5-20"),  
    ("Python 从入门到精通", "Python", 69.80, "2018-6-18"),  
    ("零基础学 PHP", "PHP", 69.80, "2017-5-21"),  
    ("PHP 项目开发实战入门", "PHP", 79.80, "2016-5-21"),  
    ("零基础学 Java", "Java", 69.80, "2017-5-21")  
]  

try:  
    # 使用 executemany 批量插入  
    cursor.executemany(  
        "INSERT INTO books (name, category, price, publish_time) VALUES (%s, %s, %s, %s)",  
        data  
    )  
    db.commit()  # 提交事务  
except Exception as e:  
    print("插入失败:", e)  
    db.rollback()  # 回滚事务  
finally:  
    db.close()  

注意事项:

  1. 防 SQL 注入:使用 %s 占位符而非字符串拼接。
  2. 字符集设置:连接时指定 charset="utf8" 确保中文正确存储。
  3. 事务管理:
    • 成功时 commit() 提交更改。
    • 失败时 rollback() 回滚至操作前状态。
  4. 资源释放:始终在 finally 中关闭连接。

🔎5.总结

  • PyMySQL 核心流程:安装驱动 → 连接数据库 → 创建/操作表 → 关闭连接。
  • 安全实践:参数化查询、事务控制、字符集配置。
  • 扩展建议:
    • 结合 WITH 语句自动管理连接(如 with db.cursor() as cursor)。
    • 使用 ORM 框架(如 SQLAlchemy)简化复杂操作。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 💎 行业认证·权威头衔
  • 🏆 荣誉殿堂
  • 📚 知识宝库
  • 🚀前言
  • 🚀一、MySQL数据库
    • 🔎1.安装 PyMySQL
    • 🔎2.连接数据库
    • 🔎3.创建数据表
    • 🔎4.操作 MySQL 数据表
    • 🔎5.总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档