#!/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("❌ 数据库迁移失败,请查看日志")