from pydantic_settings import BaseSettings from pydantic import field_validator class DatabaseConfig(BaseSettings): """数据库配置""" host: str = "localhost" port: int = 3306 user: str = "root" password: str = "" name: str = "question_bank" @field_validator('port') def validate_db_port(cls, value): if value < 1024 or value > 65535: raise ValueError('数据库端口必须在1024-65535之间') return value @field_validator('name') def validate_db_name(cls, value): if not value or len(value) < 2: raise ValueError('数据库名称不能为空且至少2个字符') return value def to_string(self, indent: int = 0) -> str: """将配置转换为字符串""" indent_str = ' ' * indent result = [] for field_name, field_value in self.__dict__.items(): result.append(f"{indent_str}{field_name}: {field_value}") return '\n'.join(result)