database.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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_", env_file=".env", case_sensitive=False, extra="ignore"
  53. )
  54. class LongArticlesDatabaseConfig(DatabaseConfig):
  55. host: str = "rm-bp14529nwwcw75yr1ko.mysql.rds.aliyuncs.com"
  56. user: str = "changwen_admin"
  57. password: str = "changwen@123456"
  58. db: str = "long_articles"
  59. model_config = SettingsConfigDict(
  60. env_prefix="LONG_ARTICLES_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  61. )
  62. class PiaoquanCrawlerDatabaseConfig(DatabaseConfig):
  63. host: str = "rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com"
  64. user: str = "crawler"
  65. password: str = "crawler123456@"
  66. db: str = "piaoquan-crawler"
  67. model_config = SettingsConfigDict(
  68. env_prefix="PIAOQUAN_CRAWLER_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  69. )
  70. class GrowthDatabaseConfig(DatabaseConfig):
  71. host: str = "rm-bp17q95335a99272b.mysql.rds.aliyuncs.com"
  72. user: str = "crawler"
  73. password: str = "crawler123456@"
  74. db: str = "growth"
  75. model_config = SettingsConfigDict(
  76. env_prefix="GROWTH_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  77. )
  78. class ContentDeconstructionSupplyConfig(DatabaseConfig):
  79. host: str = "rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com"
  80. user: str = "content_rw"
  81. password: str = "bC1aH4bA1lB0"
  82. db: str = "content-deconstruction-supply"
  83. model_config = SettingsConfigDict(
  84. env_prefix="CONTENT_DECONSREUCTION_DB_", env_file=".env", case_sensitive=False, extra="ignore"
  85. )
  86. # ============ PostgreSQL / Milvus / Redis 配置 ============
  87. class PgConfig(BaseSettings):
  88. """PostgreSQL 连接配置"""
  89. host: str = "127.0.0.1"
  90. port: int = 5432
  91. user: str = "postgres"
  92. password: str = ""
  93. db: str = "postgres"
  94. minsize: int = 5
  95. maxsize: int = 20
  96. backend: str = "postgresql"
  97. model_config = SettingsConfigDict(
  98. env_prefix="PG_", env_file=".env", case_sensitive=False, extra="ignore"
  99. )
  100. class MilvusConfig(BaseSettings):
  101. """Milvus 向量数据库连接配置"""
  102. host: str = "127.0.0.1"
  103. port: int = 19530
  104. user: str = ""
  105. password: str = ""
  106. backend: str = "milvus"
  107. model_config = SettingsConfigDict(
  108. env_prefix="MILVUS_", env_file=".env", case_sensitive=False, extra="ignore"
  109. )
  110. class RedisConfig(BaseSettings):
  111. """Redis 连接配置"""
  112. host: str = "127.0.0.1"
  113. port: int = 6379
  114. password: str = ""
  115. db: int = 0
  116. backend: str = "redis"
  117. model_config = SettingsConfigDict(
  118. env_prefix="REDIS_", env_file=".env", case_sensitive=False, extra="ignore"
  119. )