Cum putem folosi Pydantic Settings

Cum putem folosi Pydantic Settings


Introducere

pydantic-settings este un modul din cadrul bibliotecii pydantic care facilitează gestionarea și validarea configurărilor aplicațiilor. Acesta oferă o modalitate elegantă de a defini setările aplicațiilor, de a le încărca din diverse surse (de exemplu, fișiere de configurare, variabile de mediu) și de a le valida automat.

Acest tutorial va ghida utilizatorii prin configurarea și utilizarea pydantic-settings pentru a gestiona setările aplicațiilor Python.

Definirea Setărilor Aplicației

Începe prin a crea un model de setări folosind pydantic.BaseSettings. Acest model va defini toate configurările necesare aplicației tale.

Exemplu de Model de Setări

from pydantic import BaseSettings

class Settings(BaseSettings):
    app_name: str = "MyApp"
    debug: bool = False
    database_url: str
    class Config:
        env_file = ".env"  # Specifică fișierul .env de unde vor fi încărcate variabilele de mediu


  • Definirea variabilelor de configurare: Aici, am definit trei setări: app_name, debug și database_url.

  • Valori implicite: app_name are o valoare implicită "MyApp" și debug are valoarea implicită False.

  • Variabile obligatorii: database_url este obligatorie, neavând o valoare implicită.

  • Configurația suplimentară: În class Config, am specificat env_file = ".env" pentru a indica faptul că variabilele de mediu ar trebui încărcate dintr-un fișier .env.

Utilizarea Modelului de Setări

După definirea modelului de setări, putem inițializa și utiliza aceste setări în aplicația noastră.

Încărcarea și Utilizarea Setărilor

Creează un fișier .env în directorul proiectului tău și adaugă următoarele variabile:

APP_NAME=SuperApp
DEBUG=True
DATABASE_URL=postgresql://user:password@localhost/dbname


Acum, putem încărca și utiliza aceste setări în aplicația noastră:

from pydantic import BaseSettings

class Settings(BaseSettings):
    app_name: str = "MyApp"
    debug: bool = False
    database_url: str
    class Config:
        env_file = ".env"

# Inițializarea setărilor
settings = Settings()
print(f"App Name: {settings.app_name}")
print(f"Debug Mode: {settings.debug}")
print(f"Database URL: {settings.database_url}")


  • Inițializarea setărilor: settings = Settings() inițializează obiectul setărilor și încarcă variabilele de mediu din fișierul .env.

  • Accesarea valorilor: Valorile setărilor sunt accesibile ca atribute ale obiectului settings.

Validarea Setărilor

Unul dintre principalele avantaje ale pydantic este validarea automată a datelor. pydantic validează automat tipurile de date și valorile specificate în modelul de setări.

Exemple de Validare

Adaugă restricții suplimentare pentru valorile setărilor:

from pydantic import BaseSettings, AnyUrl, validator

class Settings(BaseSettings):
    app_name: str = "MyApp"
    debug: bool = False
    database_url: AnyUrl

    @validator("app_name")
    def name_must_not_be_empty(cls, v):
        if not v:
            raise ValueError("App name must not be empty")
        return v

    class Config:
        env_file = ".env"


  • Tipuri de date specifice: AnyUrl asigură că database_url este un URL valid.

  • Validatori personalizați: Funcția name_must_not_be_empty validează că app_name nu este gol.

Setări Dinamic Încărcate

pydantic-settings permite încărcarea dinamică a setărilor din multiple surse. De exemplu, poți încărca setări din variabile de mediu, fișiere de configurare JSON, YAML sau chiar din baze de date.

Încărcarea setărilor îm mod dinamic

from pydantic import BaseSettings

class Settings(BaseSettings):
    app_name: str = "MyApp"
    debug: bool = False
    database_url: str
    class Config:
        env_prefix = "MYAPP_"  # Prefix pentru variabilele de mediu
        env_file = ".env"

# Inițializarea setărilor din variabilele de mediu cu prefix
settings = Settings()
print(f"App Name: {settings.app_name}")
print(f"Debug Mode: {settings.debug}")
print(f"Database URL: {settings.database_url}")


  • Prefixul variabilelor de mediu: env_prefix = "MYAPP_" permite încărcarea variabilelor de mediu cu prefixul specificat (de exemplu, MYAPP_APP_NAME).

Concluzie

Modulul pydantic-settings oferă o modalitate puternică și flexibilă de a gestiona și valida setările aplicațiilor Python. Prin utilizarea acestui modul, poți defini clar și concis configurările necesare, asigurând validitatea și consistența lor, indiferent de sursa de unde sunt încărcate.


Trebuie să fii autentificat pentru a accesa editorul de cod și pentru a experimenta codul prezentat în acest tutorial.

Intră în cont