#!/usr/bin/env python3 # -*- coding: utf-8 -*- """merge_constituent.py — 单元3 合并: staging -> constituent_unified, bs_index_constituent -> _old。 前提: migrate_constituent.py 已建 constituent_unified_staging (验证通过)。 - constituent_unified_staging RENAME constituent_unified (正式表) - bs_index_constituent RENAME bs_index_constituent_old (保留 988 时点精度, 不删) - 建索引 (index_code, code) 加速 get_index_stocks 查询 回滚: rename 反向 (constituent_unified->staging, _old->bs_index_constituent) """ import sqlite3 DB = r"C:\sanguo_vnpy_v2\data\quant_trading.db" c = sqlite3.connect(DB, timeout=60) c.execute("PRAGMA busy_timeout = 60000") c.execute("ALTER TABLE constituent_unified_staging RENAME TO constituent_unified") print("renamed constituent_unified_staging -> constituent_unified") c.execute("ALTER TABLE bs_index_constituent RENAME TO bs_index_constituent_old") print("renamed bs_index_constituent -> bs_index_constituent_old (时点精度保留)") c.execute("CREATE INDEX IF NOT EXISTS idx_constituent_unified " "ON constituent_unified(index_code, code)") c.commit() print("constituent_unified rows:", c.execute( "SELECT COUNT(*) FROM constituent_unified").fetchone()[0]) print("bs_index_constituent_old rows:", c.execute( "SELECT COUNT(*) FROM bs_index_constituent_old").fetchone()[0]) c.close() print("MERGE DONE")