config_database.py 994 B

12345678910111213141516171819202122232425262728293031
  1. from pydantic_settings import BaseSettings
  2. from pydantic import field_validator
  3. class DatabaseConfig(BaseSettings):
  4. """数据库配置"""
  5. host: str = "localhost"
  6. port: int = 3306
  7. user: str = "root"
  8. password: str = ""
  9. name: str = "question_bank"
  10. @field_validator('port')
  11. def validate_db_port(cls, value):
  12. if value < 1024 or value > 65535:
  13. raise ValueError('数据库端口必须在1024-65535之间')
  14. return value
  15. @field_validator('name')
  16. def validate_db_name(cls, value):
  17. if not value or len(value) < 2:
  18. raise ValueError('数据库名称不能为空且至少2个字符')
  19. return value
  20. def to_string(self, indent: int = 0) -> str:
  21. """将配置转换为字符串"""
  22. indent_str = ' ' * indent
  23. result = []
  24. for field_name, field_value in self.__dict__.items():
  25. result.append(f"{indent_str}{field_name}: {field_value}")
  26. return '\n'.join(result)