奇术秘典篇-Day37|宝库初识:数据库基础,SQLite 入门,与文件存储对比

0 次阅读 2026-10-21 09:10

📖 知识点

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 实战任务

任务需求:

  1. 导入 sqlite3
  2. 连接数据库 mydata.db(自动创建)
  3. 建一张表 info,字段:id(整数)、title(文本)
  4. 插入两条测试数据
  5. 查询并打印所有数据,验证入库成功

参考代码

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魔法

🧠 思考题

  1. SQLite 相比 txt 文件存储,在 "查询" 和 "去重" 上有什么优势?
  2. 建表时 CREATE TABLE IF NOT EXISTS 里的 IF NOT EXISTS 有什么作用?不写会怎样?