yj
2026-03-31 4becf7b5eba5de2d9889f379eb88aeb6cb16f760
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import json
import pymysql
import logging
from database import DatabaseConfig
 
# 设置日志记录
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
 
 
def update_database():
    """更新数据库,添加order字段到content表"""
    try:
        with open("config.json") as f:
            config = json.load(f)
    except FileNotFoundError:
        logger.error("配置文件 config.json 未找到")
        raise
    except json.JSONDecodeError:
        logger.error("配置文件 config.json 中JSON格式无效")
        raise
 
    if "database" not in config:
        logger.error("配置文件中未找到数据库配置")
        raise ValueError("数据库配置缺失")
 
    db_config = config["database"]
 
    # 连接数据库
    try:
        connection = pymysql.connect(
            host=db_config.get("host", "localhost"),
            port=int(db_config.get("port", 3306)),
            user=db_config.get("user", "root"),
            password=db_config.get("password", ""),
            database=db_config.get("database_name", "admin_db"),
            charset=db_config.get("charset", "utf8mb4"),
        )
    except Exception as e:
        logger.error(f"建立数据库连接时出错: {e}")
        raise
 
    try:
        with connection.cursor() as cursor:
            # 检查字段是否已存在
            check_column_sql = """
            SELECT COLUMN_NAME 
            FROM INFORMATION_SCHEMA.COLUMNS 
            WHERE TABLE_SCHEMA = %s AND TABLE_NAME = 'content' AND COLUMN_NAME = 'order'
            """
            cursor.execute(check_column_sql, (db_config.get('database_name', 'admin_db'),))
            result = cursor.fetchone()
            
            if result:
                logger.info("order字段已存在,无需更新")
                return
 
            # 添加order字段
            alter_table_sql = """
            ALTER TABLE content ADD COLUMN `order` INT DEFAULT 0
            """
            cursor.execute(alter_table_sql)
            connection.commit()
 
            logger.info("数据库更新成功! 已添加order字段到content表")
    except Exception as e:
        logger.error(f"更新数据库时出错: {e}")
        raise
    finally:
        connection.close()
 
 
if __name__ == "__main__":
    # 初始化数据库配置
    db_config = DatabaseConfig()
    update_database()