#!/usr/bin/env python3 # -*- coding: utf-8 -*- """dbbardata_probe.py — 只读探测 dbbardata 现状(schema + 抽样各 interval 覆盖)。 走 symbol 索引,避免全表 COUNT(亿级慢)。回答: - dbbardata 有哪些 interval(d/15m/5m) - 个股日线(interval='d' 类)含不含退市股(000005/000023/600811/600074) - 在市股(600519/000001)日线日期范围 - ETF(510300/159915)有没有(判断 dbbardata 是否覆盖 ETF) 用于决定迁移单元5(dbbardata 个股日线切 baostock 源)的工作量。 """ import sqlite3 from pathlib import Path DB = Path(r"C:\sanguo_vnpy_v2\data\quant_trading.db") c = sqlite3.connect(str(DB), timeout=60) c.execute("PRAGMA busy_timeout = 60000") cols = [r[1] for r in c.execute("PRAGMA table_info(dbbardata)")] print(f"DB: {DB}") print(f"dbbardata cols({len(cols)}): {cols}") print("\n=== 抽样: 各 symbol 的 interval 覆盖 (走索引, 快) ===") samples = { "退市": ["000005", "000023", "600811", "600074"], "在市个股": ["600519", "000001"], "ETF/基金": ["510300", "159915", "510050"], } for label, syms in samples.items(): print(f"\n[{label}]") for sym in syms: rows = c.execute( "SELECT interval, COUNT(*), MIN(datetime), MAX(datetime) " "FROM dbbardata WHERE symbol=? GROUP BY interval", (sym,), ).fetchall() print(f" {sym}: {rows}") c.close()