| | """ |
| | 数据库初始化模块 |
| | """ |
| | 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_values = dotenv_values(".env") |
| | |
| | |
| | inspector = inspect(engine) |
| | |
| | |
| | if "t_settings" in inspector.get_table_names(): |
| | |
| | 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 |
| |
|