stock-ai-agent/scripts/migrate_add_entry_zone.py
2026-02-24 22:05:30 +08:00

78 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
数据库迁移脚本:添加 entry_zone 字段到 trading_signals 表
使用方法:
python scripts/migrate_add_entry_zone.py
或者在服务器上直接执行 SQL
sqlite3 backend/stock_agent.db "ALTER TABLE trading_signals ADD COLUMN entry_zone FLOAT;"
"""
import sqlite3
import os
from pathlib import Path
def migrate_add_entry_zone():
"""添加 entry_zone 字段"""
# 数据库路径
db_path = Path(__file__).parent.parent / "backend" / "stock_agent.db"
if not db_path.exists():
print(f"❌ 数据库文件不存在: {db_path}")
return False
try:
# 连接数据库
conn = sqlite3.connect(str(db_path))
cursor = conn.cursor()
# 检查字段是否已存在
cursor.execute("PRAGMA table_info(trading_signals)")
columns = [col[1] for col in cursor.fetchall()]
if 'entry_zone' in columns:
print("✅ entry_zone 字段已存在,无需迁移")
conn.close()
return True
# 添加字段
print(f"📝 正在添加 entry_zone 字段到 {db_path}...")
cursor.execute("ALTER TABLE trading_signals ADD COLUMN entry_zone FLOAT")
conn.commit()
# 验证
cursor.execute("PRAGMA table_info(trading_signals)")
columns = [col[1] for col in cursor.fetchall()]
if 'entry_zone' in columns:
print("✅ entry_zone 字段添加成功")
conn.close()
return True
else:
print("❌ 字段添加失败")
conn.close()
return False
except Exception as e:
print(f"❌ 迁移失败: {e}")
return False
if __name__ == "__main__":
print("=" * 60)
print("数据库迁移:添加 entry_zone 字段")
print("=" * 60)
success = migrate_add_entry_zone()
if success:
print("\n✅ 迁移完成!")
print("\n请重启服务以使更改生效:")
print(" pm2 restart stock-agent")
else:
print("\n❌ 迁移失败!")
print("\n如果自动迁移失败,可以手动执行 SQL")
print(" sqlite3 backend/stock_agent.db \"ALTER TABLE trading_signals ADD COLUMN entry_zone FLOAT;\"")