database.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. """数据库连接配置 —— 所有存储引擎配置模型
  2. 每个具体配置类通过 env_prefix 从环境变量读取敏感信息。
  3. 默认值仅包含安全的占位值,生产凭证必须通过环境变量注入。
  4. """
  5. from pydantic_settings import BaseSettings, SettingsConfigDict
  6. class DatabaseConfig(BaseSettings):
  7. """数据库连接配置基类
  8. 通过 backend 字段指定存储引擎类型:
  9. - "mysql" / "" → MySQLBackend
  10. - "postgresql" → PgBackend
  11. - "milvus" → MilvusBackend
  12. - "redis" → RedisBackend
  13. """
  14. host: str = "127.0.0.1"
  15. port: int = 3306
  16. user: str = "root"
  17. password: str = ""
  18. db: str = "test"
  19. charset: str = "utf8mb4"
  20. minsize: int = 5
  21. maxsize: int = 20
  22. backend: str = ""
  23. model_config = SettingsConfigDict(
  24. env_prefix="", case_sensitive=False, extra="ignore"
  25. )
  26. def to_dict(self) -> dict:
  27. return {
  28. "host": self.host,
  29. "port": self.port,
  30. "user": self.user,
  31. "password": self.password,
  32. "db": self.db,
  33. "charset": self.charset,
  34. "minsize": self.minsize,
  35. "maxsize": self.maxsize,
  36. }
  37. # ============ 业务数据库配置 ============
  38. class AigcDatabaseConfig(DatabaseConfig):
  39. host: str = "rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com"
  40. user: str = "crawler_admin"
  41. password: str = "cyber#crawler_2023"
  42. db: str = "aigc-admin-prod"
  43. model_config = SettingsConfigDict(
  44. env_prefix="AIGC_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  45. )
  46. class LongVideoDatabaseConfig(DatabaseConfig):
  47. host: str = "rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com"
  48. user: str = "wx2016_longvideo"
  49. password: str = "wx2016_longvideoP@assword1234"
  50. db: str = "longvideo"
  51. model_config = SettingsConfigDict(
  52. env_prefix="LONG_VIDEO_DB_",
  53. env_file=".env",
  54. case_sensitive=False,
  55. extra="ignore",
  56. )
  57. class LongArticlesDatabaseConfig(DatabaseConfig):
  58. host: str = "rm-bp14529nwwcw75yr1ko.mysql.rds.aliyuncs.com"
  59. user: str = "changwen_admin"
  60. password: str = "changwen@123456"
  61. db: str = "long_articles"
  62. model_config = SettingsConfigDict(
  63. env_prefix="LONG_ARTICLES_DB_",
  64. env_file=".env",
  65. case_sensitive=False,
  66. extra="ignore",
  67. )
  68. class PiaoquanCrawlerDatabaseConfig(DatabaseConfig):
  69. host: str = "rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com"
  70. user: str = "crawler"
  71. password: str = "crawler123456@"
  72. db: str = "piaoquan-crawler"
  73. model_config = SettingsConfigDict(
  74. env_prefix="PIAOQUAN_CRAWLER_DB_",
  75. env_file=".env",
  76. case_sensitive=False,
  77. extra="ignore",
  78. )
  79. class GrowthDatabaseConfig(DatabaseConfig):
  80. host: str = "rm-bp17q95335a99272b.mysql.rds.aliyuncs.com"
  81. user: str = "crawler"
  82. password: str = "crawler123456@"
  83. db: str = "growth"
  84. model_config = SettingsConfigDict(
  85. env_prefix="GROWTH_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  86. )
  87. class ContentDeconstructionSupplyConfig(DatabaseConfig):
  88. host: str = "rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com"
  89. user: str = "content_rw"
  90. password: str = "bC1aH4bA1lB0"
  91. db: str = "content-deconstruction-supply"
  92. model_config = SettingsConfigDict(
  93. env_prefix="CONTENT_DECONSREUCTION_DB_",
  94. env_file=".env",
  95. case_sensitive=False,
  96. extra="ignore",
  97. )
  98. # ============ PostgreSQL / Milvus / Redis 配置 ============
  99. class PgConfig(BaseSettings):
  100. """PostgreSQL 连接配置"""
  101. host: str = "127.0.0.1"
  102. port: int = 5432
  103. user: str = "postgres"
  104. password: str = ""
  105. db: str = "postgres"
  106. minsize: int = 5
  107. maxsize: int = 20
  108. backend: str = "postgresql"
  109. model_config = SettingsConfigDict(
  110. env_prefix="PG_", env_file=".env", case_sensitive=False, extra="ignore"
  111. )
  112. class MilvusConfig(BaseSettings):
  113. """Milvus 向量数据库连接配置"""
  114. host: str = "127.0.0.1"
  115. port: int = 19530
  116. user: str = ""
  117. password: str = ""
  118. backend: str = "milvus"
  119. model_config = SettingsConfigDict(
  120. env_prefix="MILVUS_", env_file=".env", case_sensitive=False, extra="ignore"
  121. )
  122. class RedisConfig(BaseSettings):
  123. """Redis 连接配置"""
  124. host: str = "127.0.0.1"
  125. port: int = 6379
  126. password: str = ""
  127. db: int = 0
  128. backend: str = "redis"
  129. model_config = SettingsConfigDict(
  130. env_prefix="REDIS_", env_file=".env", case_sensitive=False, extra="ignore"
  131. )