config.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from pydantic_settings import BaseSettings, SettingsConfigDict
  2. import os
  3. from pathlib import Path
  4. from urllib.parse import quote_plus
  5. class Settings(BaseSettings):
  6. DB_HOST: str
  7. DB_PORT: int = 3306
  8. DB_USER: str
  9. DB_PASSWORD: str
  10. DB_NAME: str
  11. DB_CHARSET: str
  12. API_URL: str
  13. LIMIT_DAY: int
  14. CRON_HOUR: int = 8
  15. CRON_MINUTE: int = 0
  16. ALIYUN_ACCESS_KEY_ID: str = ""
  17. ALIYUN_ACCESS_KEY_SECRET: str = ""
  18. ALIYUN_REGION_ID: str = "cn-hangzhou"
  19. ENABLE_MONITOR: bool = False
  20. @property
  21. def DATABASE_URL(self) -> str:
  22. 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}"
  23. model_config = SettingsConfigDict(
  24. env_file=".env", # 指定.env文件路径(项目根目录)
  25. env_file_encoding="utf-8" # 解决中文注释乱码问题
  26. )
  27. # 使用绝对路径尝试加载
  28. env_path = Path(__file__).parent.parent.parent / ".env"
  29. settings = Settings(_env_file=env_path)