02-数据脚本

数据获取与维护的 Python 脚本集合。当前主数据源为 akshare,设计为可扩展其他来源(Tushare、Wind API、手工 CSV 等)。

脚本清单

脚本职责
db.py数据库连接、建表、状态查看
fetcher_common.py公共工具:重试、字段校验、失败记录、主备切换
fetcher_index.py指数数据:基本信息、日线、估值(含分位计算)
fetcher_fund.py基金数据:基本信息、ETF/场外日线、持仓
fetcher_stock.py股票数据:基本信息、日线+PE/PB、财报
fetcher_industry.py行业数据:申万行业信息、日线
fetcher_macro.py宏观指标:CPI/PPI/PMI/M2/社融/GDP/国债/LPR
fetcher_money_flow.py资金流向:北向资金、两融余额
fetcher_validation.py多源交叉验证:指数收盘价、PE/PB、基金净值、股票收盘价
update_all.py全量更新入口:编排各 fetcher、管理快照与失败重试
requirements.txtPython 依赖清单(akshare 版本锁定)

使用方式

首次建库

cd 05-数据库/02-数据脚本
pip install -r requirements.txt
python db.py                  # 建库建表
python update_all.py --mode full  # 全量拉取历史数据

--mode full 的起始日固定为 1990-01-01,早于所有关注指数的成立日。akshare 会按各指数实际行情起点返回数据,等价于"按成立日拉取全历史":沪深300 拉到 2005-04-08、创业板指拉到 2010-06-01、科创50 拉到 2020-07-23,互不影响。

日常更新

python update_all.py                # 增量更新(默认 daily 模式)
python update_all.py --mode daily   # 显式指定
python update_all.py --backup       # 更新前强制备份

仅校验

python update_all.py --mode validate    # 跑交叉验证,不写新数据
python update_all.py --mode validate --full  # 全量校验(含历史数据)

查看状态

python db.py --status    # 打印各表行数

标的关注清单

update_all.py 内置了关注的标的清单,按需调整:

  • 指数:沪深300、中证500、中证1000、创业板指、上证50、科创50
  • 基金:510300、510500、159915、588000(对应 ETF)
  • 股票:贵州茅台、五粮液、宁德时代(行业龙头示例)

扩展关注清单时,直接修改 update_all.py 中的 WATCH_INDEXESWATCH_FUNDSWATCH_STOCKS 三个列表。

调度配置

日常更新通过 Windows 任务计划程序调度,配置方式见 01-数据方案设计/04-数据更新与调度策略

日志与备份

  • 日志:logs/update_YYYYMMDD.log
  • 数据库备份:../03-数据文件/backups/trend_invest_YYYYMMDD_HHMMSS.db(保留 30 天)

日志和备份目录均已加入 .gitignore,不进版本库。

扩展其他数据源

未来如需接入 Tushare、Wind API 或手工 CSV,按以下步骤扩展:

  1. fetcher_common.pycall_with_fallback 中新增数据源调用函数
  2. 在对应 fetcher_*.py 中把新源作为 primary 或 secondary
  3. 交叉验证脚本 fetcher_validation.py 自动覆盖新源比对

不需要修改查询接口层,业务层完全不感知数据源切换。