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
șidatabase_url
.Valori implicite:
app_name
are o valoare implicită "MyApp" șidebug
are valoarea implicităFalse
.Variabile obligatorii:
database_url
este obligatorie, neavând o valoare implicită.Configurația suplimentară: În
class Config
, am specificatenv_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.