mysql.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from pydantic_settings import BaseSettings, SettingsConfigDict
  2. class DatabaseConfig(BaseSettings):
  3. """数据库配置基类"""
  4. host: str
  5. port: int = 3306
  6. user: str
  7. password: str
  8. db: str
  9. charset: str = "utf8mb4"
  10. minsize: int = 5
  11. maxsize: int = 20
  12. model_config = SettingsConfigDict(
  13. env_prefix="", case_sensitive=False, extra="ignore"
  14. )
  15. def to_dict(self) -> dict:
  16. """转换为字典格式,用于兼容旧代码"""
  17. return {
  18. "host": self.host,
  19. "port": self.port,
  20. "user": self.user,
  21. "password": self.password,
  22. "db": self.db,
  23. "charset": self.charset,
  24. "minsize": self.minsize,
  25. "maxsize": self.maxsize,
  26. }
  27. class AigcDatabaseConfig(DatabaseConfig):
  28. """AIGC 数据库配置"""
  29. model_config = SettingsConfigDict(
  30. env_prefix="AIGC_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  31. )
  32. class LongVideoDatabaseConfig(DatabaseConfig):
  33. """长视频数据库配置"""
  34. model_config = SettingsConfigDict(
  35. env_prefix="LONG_VIDEO_DB_",
  36. env_file=".env",
  37. case_sensitive=False,
  38. extra="ignore",
  39. )
  40. class LongArticlesDatabaseConfig(DatabaseConfig):
  41. """长文数据库配置"""
  42. model_config = SettingsConfigDict(
  43. env_prefix="LONG_ARTICLES_DB_",
  44. env_file=".env",
  45. case_sensitive=False,
  46. extra="ignore",
  47. )
  48. class PiaoquanCrawlerDatabaseConfig(DatabaseConfig):
  49. """票圈爬虫数据库配置"""
  50. model_config = SettingsConfigDict(
  51. env_prefix="PIAOQUAN_CRAWLER_DB_",
  52. env_file=".env",
  53. case_sensitive=False,
  54. extra="ignore",
  55. )
  56. class GrowthDatabaseConfig(DatabaseConfig):
  57. """增长数据库配置"""
  58. model_config = SettingsConfigDict(
  59. env_prefix="GROWTH_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  60. )