from pydantic_settings import BaseSettings, SettingsConfigDict class DatabaseConfig(BaseSettings): """数据库配置基类""" host: str port: int = 3306 user: str password: str db: str charset: str = "utf8mb4" minsize: int = 5 maxsize: int = 20 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): """AIGC 数据库配置""" 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" )