from pydantic_settings import BaseSettings, SettingsConfigDict import os from pathlib import Path from urllib.parse import quote_plus class Settings(BaseSettings): DB_HOST: str DB_PORT: int = 3306 DB_USER: str DB_PASSWORD: str DB_NAME: str DB_CHARSET: str API_URL: str LIMIT_DAY: int CRON_HOUR: int = 8 CRON_MINUTE: int = 0 ALIYUN_ACCESS_KEY_ID: str = "" ALIYUN_ACCESS_KEY_SECRET: str = "" ALIYUN_REGION_ID: str = "cn-hangzhou" ENABLE_MONITOR: bool = False @property def DATABASE_URL(self) -> str: return f"mysql+aiomysql://{quote_plus(self.DB_USER)}:{quote_plus(self.DB_PASSWORD)}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset={self.DB_CHARSET}" model_config = SettingsConfigDict( env_file=".env", # 指定.env文件路径(项目根目录) env_file_encoding="utf-8" # 解决中文注释乱码问题 ) # 使用绝对路径尝试加载 env_path = Path(__file__).parent.parent.parent / ".env" settings = Settings(_env_file=env_path)