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()