""" 数据库初始化模块 """ from dotenv import dotenv_values from sqlalchemy import inspect from sqlalchemy.orm import Session from app.database.connection import engine, Base from app.database.models import Settings from app.log.logger import get_database_logger logger = get_database_logger() def create_tables(): """ 创建数据库表 """ try: # 创建所有表 Base.metadata.create_all(engine) logger.info("Database tables created successfully") except Exception as e: logger.error(f"Failed to create database tables: {str(e)}") raise def import_env_to_settings(): """ 将.env文件中的配置项导入到t_settings表中 """ try: # 获取.env文件中的所有配置项 env_values = dotenv_values(".env") # 获取检查器 inspector = inspect(engine) # 检查t_settings表是否存在 if "t_settings" in inspector.get_table_names(): # 使用Session进行数据库操作 with Session(engine) as session: # 获取所有现有的配置项 current_settings = {setting.key: setting for setting in session.query(Settings).all()} # 遍历所有配置项 for key, value in env_values.items(): # 检查配置项是否已存在 if key not in current_settings: # 插入配置项 new_setting = Settings(key=key, value=value) session.add(new_setting) logger.info(f"Inserted setting: {key}") # 提交事务 session.commit() logger.info("Environment variables imported to settings table successfully") except Exception as e: logger.error(f"Failed to import environment variables to settings table: {str(e)}") raise def initialize_database(): """ 初始化数据库 """ try: # 创建表 create_tables() # 导入环境变量 import_env_to_settings() except Exception as e: logger.error(f"Failed to initialize database: {str(e)}") raise