79 lines
2.4 KiB
Python
79 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
添加保存状态字段到 experiments 表
|
|
用于跟踪实验数据自动保存的状态
|
|
"""
|
|
import sqlite3
|
|
from pathlib import Path
|
|
from logger import get_logger
|
|
|
|
logger = get_logger()
|
|
|
|
|
|
def add_save_status_columns():
|
|
"""添加 save_status 和 save_error 字段"""
|
|
try:
|
|
db_path = Path(__file__).parent / "experiments.db"
|
|
|
|
if not db_path.exists():
|
|
logger.error(f"数据库文件不存在: {db_path}")
|
|
return False
|
|
|
|
db = sqlite3.connect(str(db_path))
|
|
cur = db.cursor()
|
|
|
|
# 检查字段是否已存在
|
|
cur.execute("PRAGMA table_info(experiments)")
|
|
columns = [row[1] for row in cur.fetchall()]
|
|
|
|
logger.info(f"当前 experiments 表字段: {columns}")
|
|
|
|
# 添加 save_status 字段
|
|
if 'save_status' not in columns:
|
|
logger.info("添加 save_status 字段...")
|
|
cur.execute("""
|
|
ALTER TABLE experiments
|
|
ADD COLUMN save_status TEXT DEFAULT NULL
|
|
""")
|
|
logger.info("✅ save_status 字段添加成功")
|
|
else:
|
|
logger.info("save_status 字段已存在,跳过")
|
|
|
|
# 添加 save_error 字段
|
|
if 'save_error' not in columns:
|
|
logger.info("添加 save_error 字段...")
|
|
cur.execute("""
|
|
ALTER TABLE experiments
|
|
ADD COLUMN save_error TEXT DEFAULT NULL
|
|
""")
|
|
logger.info("✅ save_error 字段添加成功")
|
|
else:
|
|
logger.info("save_error 字段已存在,跳过")
|
|
|
|
db.commit()
|
|
|
|
# 验证字段已添加
|
|
cur.execute("PRAGMA table_info(experiments)")
|
|
columns_after = [row[1] for row in cur.fetchall()]
|
|
logger.info(f"更新后 experiments 表字段: {columns_after}")
|
|
|
|
db.close()
|
|
|
|
logger.info("✅ 数据库迁移完成")
|
|
return True
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ 添加字段失败: {e}", exc_info=True)
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("开始添加保存状态字段...")
|
|
success = add_save_status_columns()
|
|
|
|
if success:
|
|
print("✅ 数据库迁移成功完成")
|
|
else:
|
|
print("❌ 数据库迁移失败,请查看日志")
|