03-数据文件

SQLite 数据库文件存放目录。数据库文件不进版本库,通过建表脚本与数据更新脚本生成。

文件结构

03-数据文件/
├── index.md              # 本说明
├── trend_invest.db       # 主数据库文件(运行时生成,.gitignore 排除)
└── backups/              # 自动备份目录(.gitignore 排除)
    └── trend_invest_YYYYMMDD_HHMMSS.db

数据库文件与备份目录均不进版本库,避免二进制文件污染 git 历史。版本管理通过以下方式保证可重建:

  • 建表脚本 db.py 进版本库,schema 变更有据可查
  • 数据更新脚本 fetcher_*.py 进版本库,获取逻辑可复现
  • requirements.txt 锁定 akshare 版本,保证接口一致性

生成方式

# 首次建库
cd 05-数据库/02-数据脚本
python db.py                  # 生成 trend_invest.db 并建表
python update_all.py --mode full  # 灌入全量历史数据

数据库文件生成在 05-数据库/03-数据文件/trend_invest.db

查看数据库内容

命令行方式

python db.py --status    # 查看各表行数

SQLite 客户端

使用 DB Browser for SQLite、DBeaver、TablePlus 等工具打开 trend_invest.db 文件,直接查询。

Python 查询

参考 04-查询接口/ 下的查询模板,通过 db.pyget_connection 获取连接后执行 SQL。

备份策略

  • 自动备份update_all.py --mode full--backup 时触发
  • 保留策略:最近 30 天的备份
  • 存储位置backups/trend_invest_YYYYMMDD_HHMMSS.db
  • 回滚方式:关闭所有连接 -> 用备份覆盖 trend_invest.db -> 重启

迁移与共享

数据库文件不进 git,共享方式:

  1. 导出 SQL dumpsqlite3 trend_invest.db .dump > trend_invest_YYYYMM.sql,dump 文件可进 git
  2. 导出 CSV 样本:按需导出某张表的样本数据,供他人验证分析逻辑
  3. 全量重建:他人 clone 仓库后,运行 db.py + update_all.py --mode full 生成完整数据库

由于 akshare 接口可能随时间变化,全量重建的时间点不同,数据可能有差异。分析结论应以本地库为准,并标注数据快照时间。

容量监控

当前数据量预估 50-80MB,详见 01-数据方案设计/01-数据库选型说明 的容量预估表。

定期检查数据库大小:

ls -lh 05-数据库/03-数据文件/trend_invest.db

超过 500MB 时考虑清理历史数据(如只保留近 5 年)或迁移到 DuckDB。