修改说明

This commit is contained in:
zhaojie
2025-09-08 15:27:22 +08:00
parent 8083f136c9
commit e08b570f22
26 changed files with 3524 additions and 21 deletions

90
fix_database_schema.py Normal file
View File

@@ -0,0 +1,90 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
数据库架构修复脚本
添加缺失的字段和修复表结构
"""
import sys
import os
from sqlalchemy import text
# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from src.core.database import db_manager
from src.core.models import Base
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def fix_database_schema():
"""修复数据库架构"""
try:
with db_manager.get_session() as session:
# 检查并添加severity字段到alerts表
try:
# 检查字段是否存在
result = session.execute(text("""
SELECT COUNT(*) as count
FROM information_schema.columns
WHERE table_name = 'alerts' AND column_name = 'severity'
"""))
if result.fetchone()[0] == 0:
logger.info("添加severity字段到alerts表...")
session.execute(text("ALTER TABLE alerts ADD COLUMN severity VARCHAR(20) DEFAULT 'medium'"))
session.commit()
logger.info("severity字段添加成功")
else:
logger.info("severity字段已存在")
except Exception as e:
logger.warning(f"添加severity字段失败: {e}")
# 如果是SQLite尝试不同的方法
try:
session.execute(text("ALTER TABLE alerts ADD COLUMN severity VARCHAR(20) DEFAULT 'medium'"))
session.commit()
logger.info("severity字段添加成功SQLite")
except Exception as e2:
logger.error(f"SQLite添加severity字段也失败: {e2}")
# 检查并添加is_verified相关字段到knowledge_entries表
try:
result = session.execute(text("""
SELECT COUNT(*) as count
FROM information_schema.columns
WHERE table_name = 'knowledge_entries' AND column_name = 'is_verified'
"""))
if result.fetchone()[0] == 0:
logger.info("添加is_verified字段到knowledge_entries表...")
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN is_verified BOOLEAN DEFAULT FALSE"))
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN verified_by VARCHAR(100)"))
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN verified_at DATETIME"))
session.commit()
logger.info("is_verified相关字段添加成功")
else:
logger.info("is_verified字段已存在")
except Exception as e:
logger.warning(f"添加is_verified字段失败: {e}")
# SQLite方法
try:
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN is_verified BOOLEAN DEFAULT FALSE"))
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN verified_by VARCHAR(100)"))
session.execute(text("ALTER TABLE knowledge_entries ADD COLUMN verified_at DATETIME"))
session.commit()
logger.info("is_verified相关字段添加成功SQLite")
except Exception as e2:
logger.error(f"SQLite添加is_verified字段也失败: {e2}")
logger.info("数据库架构修复完成")
except Exception as e:
logger.error(f"数据库架构修复失败: {e}")
raise
if __name__ == "__main__":
fix_database_schema()