PCM_Report/add_save_status_columns.py

79 lines
2.4 KiB
Python
Raw Permalink Normal View History

2026-03-10 17:03:31 +08:00
#!/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("❌ 数据库迁移失败,请查看日志")