在前面几篇文章中,我们已经学习了数据库的基础知识,了解了 SQL 与 NoSQL 的区别。本篇文章将进入到一个综合实践环节,带你使用 Python 连接数据库、操作数据,并将结果可视化。这不仅能加深对数据库操作的理解,也能提升数据分析与展示的能力。


一、为什么要用 Python 操作数据库?

数据库是数据存储的核心,而 Python 是一门强大的编程语言,拥有丰富的库,可以轻松实现数据采集、存储与分析。
通过 Python,我们可以:

  • 批量插入和查询数据,提升效率;
  • 使用 Pandas 将数据库结果转为数据表;
  • 借助 Matplotlib、Seaborn、ECharts 等工具进行可视化。

换句话说,Python 能够让“数据获取 → 数据处理 → 数据展示”形成一个完整的闭环。


二、准备工作

在开始之前,我们需要准备好以下工具:

  1. 安装数据库(MySQL 或 SQLite)

    • 如果你是新手,可以直接用轻量级的 SQLite(无需额外安装)。
    • 如果你想更贴近实际项目,可以使用 MySQL。
  2. 安装 Python 库

pip install pymysql sqlalchemy pandas matplotlib
  • pymysql:连接 MySQL 数据库
  • sqlalchemy:数据库 ORM 框架,便于统一管理数据库连接
  • pandas:数据处理工具
  • matplotlib:可视化库

三、用 Python 连接数据库并操作数据

这里我们以 MySQL 为例,假设数据库中有一张 学生成绩表 student_score,包含字段:

  • id(学号)
  • name(姓名)
  • subject(学科)
  • score(分数)

1. 数据库连接

import pymysql
import pandas as pd
import matplotlib.pyplot as plt
from sqlalchemy import create_engine

# 创建数据库连接
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/testdb")

print("✅ 数据库连接成功!")

2. 插入数据

# 构造示例数据
data = [
    (1, "张三", "数学", 85),
    (2, "李四", "数学", 92),
    (3, "王五", "数学", 76),
    (4, "赵六", "数学", 89),
    (5, "孙七", "数学", 95)
]

# 插入到数据库
with engine.connect() as conn:
    conn.execute("DROP TABLE IF EXISTS student_score")
    conn.execute("""
        CREATE TABLE student_score (
            id INT PRIMARY KEY,
            name VARCHAR(20),
            subject VARCHAR(20),
            score INT
        )
    """)
    for row in data:
        conn.execute("INSERT INTO student_score VALUES (%s,%s,%s,%s)", row)

print("✅ 数据插入成功!")

3. 查询数据

# 使用 Pandas 直接读取数据
df = pd.read_sql("SELECT * FROM student_score", engine)
print("📊 学生成绩数据:\n", df)

输出示例:

   id name subject  score
0   1   张三     数学     85
1   2   李四     数学     92
2   3   王五     数学     76
3   4   赵六     数学     89
4   5   孙七     数学     95

四、数据可视化

1. 绘制柱状图

# 绘制成绩分布柱状图
plt.figure(figsize=(8,5))
plt.bar(df["name"], df["score"], color="skyblue")
plt.title("学生数学成绩分布")
plt.xlabel("学生姓名")
plt.ylabel("成绩")
plt.show()

2. 绘制成绩趋势折线图

plt.figure(figsize=(8,5))
plt.plot(df["name"], df["score"], marker="o", linestyle="-", color="orange")
plt.title("学生数学成绩趋势图")
plt.xlabel("学生姓名")
plt.ylabel("成绩")
plt.show()

五、总结

本篇文章带你完成了一个完整的实战流程:

  1. 使用 Python 连接数据库;
  2. 插入并查询学生成绩数据;
  3. 使用 Pandas 和 Matplotlib 将数据可视化。

在实际项目中,我们可以扩展到更复杂的业务场景,比如:

  • 电商分析:统计商品销量、用户购买趋势;
  • 日志分析:分析服务器日志、访问趋势;
  • AI 项目:将数据库数据作为训练集输入模型。

Python 与数据库的结合,为数据分析、可视化和智能应用提供了无限可能。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐