"""数据库连接配置 —— 所有存储引擎配置模型 每个具体配置类通过 env_prefix 从环境变量读取敏感信息。 默认值仅包含安全的占位值,生产凭证必须通过环境变量注入。 """ from pydantic_settings import BaseSettings, SettingsConfigDict class DatabaseConfig(BaseSettings): """数据库连接配置基类 通过 backend 字段指定存储引擎类型: - "mysql" / "" → MySQLBackend - "postgresql" → PgBackend - "milvus" → MilvusBackend - "redis" → RedisBackend """ host: str = "127.0.0.1" port: int = 3306 user: str = "root" password: str = "" db: str = "test" charset: str = "utf8mb4" minsize: int = 5 maxsize: int = 20 backend: str = "" model_config = SettingsConfigDict( env_prefix="", case_sensitive=False, extra="ignore" ) def to_dict(self) -> dict: return { "host": self.host, "port": self.port, "user": self.user, "password": self.password, "db": self.db, "charset": self.charset, "minsize": self.minsize, "maxsize": self.maxsize, } # ============ 业务数据库配置 ============ class AigcDatabaseConfig(DatabaseConfig): host: str = "rm-t4na9qj85v7790tf84o.mysql.singapore.rds.aliyuncs.com" user: str = "crawler_admin" password: str = "cyber#crawler_2023" db: str = "aigc-admin-prod" model_config = SettingsConfigDict( env_prefix="AIGC_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class LongVideoDatabaseConfig(DatabaseConfig): host: str = "rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com" user: str = "wx2016_longvideo" password: str = "wx2016_longvideoP@assword1234" db: str = "longvideo" model_config = SettingsConfigDict( env_prefix="LONG_VIDEO_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class LongArticlesDatabaseConfig(DatabaseConfig): host: str = "rm-bp14529nwwcw75yr1ko.mysql.rds.aliyuncs.com" user: str = "changwen_admin" password: str = "changwen@123456" db: str = "long_articles" model_config = SettingsConfigDict( env_prefix="LONG_ARTICLES_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class PiaoquanCrawlerDatabaseConfig(DatabaseConfig): host: str = "rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com" user: str = "crawler" password: str = "crawler123456@" db: str = "piaoquan-crawler" model_config = SettingsConfigDict( env_prefix="PIAOQUAN_CRAWLER_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class GrowthDatabaseConfig(DatabaseConfig): host: str = "rm-bp17q95335a99272b.mysql.rds.aliyuncs.com" user: str = "crawler" password: str = "crawler123456@" db: str = "growth" model_config = SettingsConfigDict( env_prefix="GROWTH_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) class ContentDeconstructionSupplyConfig(DatabaseConfig): host: str = "rm-t4nh1xx6o2a6vj8qu3o.mysql.singapore.rds.aliyuncs.com" user: str = "content_rw" password: str = "bC1aH4bA1lB0" db: str = "content-deconstruction-supply" model_config = SettingsConfigDict( env_prefix="CONTENT_DECONSREUCTION_DB_", env_file=".env", case_sensitive=False, extra="ignore" ) # ============ PostgreSQL / Milvus / Redis 配置 ============ class PgConfig(BaseSettings): """PostgreSQL 连接配置""" host: str = "127.0.0.1" port: int = 5432 user: str = "postgres" password: str = "" db: str = "postgres" minsize: int = 5 maxsize: int = 20 backend: str = "postgresql" model_config = SettingsConfigDict( env_prefix="PG_", env_file=".env", case_sensitive=False, extra="ignore" ) class MilvusConfig(BaseSettings): """Milvus 向量数据库连接配置""" host: str = "127.0.0.1" port: int = 19530 user: str = "" password: str = "" backend: str = "milvus" model_config = SettingsConfigDict( env_prefix="MILVUS_", env_file=".env", case_sensitive=False, extra="ignore" ) class RedisConfig(BaseSettings): """Redis 连接配置""" host: str = "127.0.0.1" port: int = 6379 password: str = "" db: int = 0 backend: str = "redis" model_config = SettingsConfigDict( env_prefix="REDIS_", env_file=".env", case_sensitive=False, extra="ignore" )