from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic import BaseModel class UvicornSettings(BaseModel): host: str = "0.0.0.0" port: int = 8000 reload: bool = True class DatabaseSettings(BaseModel): url: str echo:bool=False echo_pool:bool=False pool_size: int = 50 max_overflow: int =10 convention:dict = { "ix": "ix_%(column_0_label)s", "uq": "uq_%(table_name)s_%(column_0_name)s", "ck": "ck_%(table_name)s_%(constraint_name)s", "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", "pk": "pk_%(table_name)s", } class Settings(BaseSettings): model_config = SettingsConfigDict( env_file=".env", case_sensitive=False, env_nested_delimiter="__", env_prefix="APP_CONFIG__" ) database: DatabaseSettings uvicorn: UvicornSettings = UvicornSettings() settings = Settings() print(settings.database.url)