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