📖 知识点
1. 为什么要用数据库?
文件存储(txt/csv)简单,但数据一多就难管理:查询麻烦、去重难、统计复杂。数据库能结构化存储,支持高效查询、去重、统计,像一座有索引的档案库。
💡 生活比喻 txt 文件像一摞随手记的纸条,多了就乱;数据库像带索引的档案柜,几十万条也能秒速查到想要的那条。
2. SQLite 是什么?
SQLite:一种轻量级数据库,就一个 .db 文件,无需安装服务器,Python 自带模块 sqlite3 直接可用。适合单机、中小规模数据存储 —— 完美搭配爬虫采集。
3. SQLite 基础四步
import sqlite3
# 1. 连接(没有会自动创建文件)
conn = sqlite3.connect("mydata.db")
cur = conn.cursor()
# 2. 建表
cur.execute("CREATE TABLE IF NOT EXISTS info (id INTEGER, title TEXT)")
# 3. 插入数据
cur.execute("INSERT INTO info VALUES (1, '第一条数据')")
# 4. 提交并关闭
conn.commit()
conn.close()
4. 文件存储 vs 数据库对比
| 对比项 | 文件存储(txt/csv) | SQLite 数据库 |
|---|---|---|
| 数据量 | 小规模还行 | 支持大规模 |
| 查询 | 全文件遍历,慢 | 索引查询,快 |
| 去重 | 手动麻烦 | SQL 去重方便 |
| 统计 | 自己写逻辑 | SQL 聚合函数 |
| 上手难度 | 低 | 略高,但值得 |
💡 一句话理解 SQLite = 轻量宝库。学四步(连接→建表→插入→提交)就能入门,是采集数据的理想搭档。
⚔️ Kata 实战任务
任务需求:
- 导入 sqlite3
- 连接数据库
mydata.db(自动创建) - 建一张表
info,字段:id(整数)、title(文本) - 插入两条测试数据
- 查询并打印所有数据,验证入库成功
参考代码
import sqlite3
# 宝库初识:连接数据库(文件不存在会自动创建)
conn = sqlite3.connect("mydata.db")
cur = conn.cursor()
print("🏦 已连接数据库:mydata.db")
# 建表
cur.execute("CREATE TABLE IF NOT EXISTS info (id INTEGER, title TEXT)")
# 插入两条数据
cur.execute("INSERT INTO info VALUES (1, 'Python基础')")
cur.execute("INSERT INTO info VALUES (2, 'DrissionPage魔法')")
# 提交保存
conn.commit()
print("✅ 已插入2条数据并提交")
# 查询验证
cur.execute("SELECT * FROM info")
rows = cur.fetchall()
print("📚 数据库中的记录:")
for row in rows:
print(f" {row[0]}. {row[1]}")
conn.close()
运行输出:
🏦 已连接数据库:mydata.db
✅ 已插入2条数据并提交
📚 数据库中的记录:
1. Python基础
2. DrissionPage魔法
🧠 思考题
- SQLite 相比 txt 文件存储,在 "查询" 和 "去重" 上有什么优势?
- 建表时
CREATE TABLE IF NOT EXISTS里的IF NOT EXISTS有什么作用?不写会怎样?
行者孙Python