You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
buffer_platform/app/config_migration.py

53 lines
1.5 KiB

"""
配置迁移 - JSON 配置文件 MySQL
"""
import logging
from app.config_store import get_config_store, CONFIG_FILES, DEFAULT_CONFIGS
logger = logging.getLogger(__name__)
CONFIG_KEYS = ["symbols", "ai"]
def migrate_configs_to_mysql():
"""
JSON 配置文件迁移到 MySQL
Returns:
bool: 迁移是否成功
"""
store = get_config_store()
if not store.storage_manager.check_mysql():
logger.warning("MySQL 不可用,跳过配置迁移")
return True
if store.session_maker is None:
logger.warning("MySQL session 未初始化,跳过配置迁移")
return True
migrated_count = 0
skipped_count = 0
for key in CONFIG_KEYS:
try:
if store._config_exists_in_mysql(key):
logger.info(f"MySQL 配置 [{key}] 已存在,跳过迁移")
skipped_count += 1
continue
value = store._load_json_from_file(key)
if value is None:
value = DEFAULT_CONFIGS.get(key, {})
logger.info(f"JSON 配置 [{key}] 不存在或损坏,使用默认值迁移")
store._save_to_mysql(key, value)
migrated_count += 1
logger.info(f"配置 [{key}] 已从 JSON 迁移到 MySQL")
except Exception as e:
logger.error(f"迁移配置 [{key}] 失败: {e}")
return False
logger.info(f"配置迁移完成: 迁移 {migrated_count} 项,跳过 {skipped_count}")
return True