Files
MoFin/deploy/profile-scripts/schema_migrate_20260817.py

38 lines
1.3 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""schema_migrate_20260817.py — 2026-08-17 数据库迁移
新增列(幂等,已存在则跳过):
1. candidates.source TEXT — 资金流突变候选来源(fund_flow_alert 写)
2. candidates.source_strategy TEXT — 选股来源策略(4 scanner 写,老莫要求)
3. holding_strategies.strategy_name TEXT — 策略名(promote 继承候选)
4. strategy_history.strategy_name TEXT — 重评快照策略名
"""
import sqlite3
DB = "/home/hmo/MoFin/data/mofin.db"
MIGRATIONS = [
("candidates", "source", "TEXT"),
("candidates", "source_strategy", "TEXT"),
("holding_strategies", "strategy_name", "TEXT"),
("strategy_history", "strategy_name", "TEXT"),
]
def main():
conn = sqlite3.connect(DB, timeout=30)
conn.execute("PRAGMA busy_timeout=30000")
done = 0
for table, col, ctype in MIGRATIONS:
cols = [c[1] for c in conn.execute(f"PRAGMA table_info({table})").fetchall()]
if col not in cols:
conn.execute(f"ALTER TABLE {table} ADD COLUMN {col} {ctype}")
print(f" ✅ {table}.{col} 已加")
done += 1
else:
print(f" ⏭ {table}.{col} 已存在")
conn.commit()
conn.close()
print(f"\n迁移完成: {done} 列新增")
if __name__ == "__main__":
main()