La convalida dei dati rappresenta una pietra angolare per applicazioni robuste nel campo in continua evoluzione dell’ingegneria dei dati e dello sviluppo di software. Garantire la pulizia e l’accuratezza dei dati è essenziale non solo per l’affidabilità delle applicazioni ma anche per l’esperienza dell’utente.
Pydantic è la libreria di convalida dei dati più utilizzata per Python. Il nucleo della versione più recente (V2) di Pydantic è stato riscritto in Rust e offre prestazioni molto migliori rispetto alla versione precedente. Inoltre, ci sono alcuni importanti miglioramenti alle funzionalità come il supporto della modalità rigorosa, la convalida senza modello, la pulizia dello spazio dei nomi del modello, ecc.
Questo post approfondirà le funzionalità più recenti e le prestazioni migliorate delle potenti funzionalità di convalida dei dati di Pydantic, offrendo agli sviluppatori un set di strumenti completo per tutti i tipi di attività di gestione dei dati.
Preparazione
Per seguire gli esempi in questo post, dovresti installare una versione moderna di Python (≥ 3.10) e l’ultima versione di Pydantic V2. Si consiglia di gestire le diverse versioni di Python e le librerie con a conda ambiente virtuale:
conda create -n pydantic2 python=3.11
conda activate pydantic2pip install -U pydantic
Utilizzo di base
Normalmente con Pydantic, dobbiamo prima definire lo schema dei nostri dati utilizzando i modelli, che sono semplicemente classi che ereditano da BaseModel
. In questi modelli, i tipi di dati di ciascun campo sono definiti da suggerimenti sul tipo.
from pydantic import BaseModelclass ComputerModel(BaseModel):
brand: str
cpu: str
storage: int
ssd: bool = True
Per utilizzare questo modello per la convalida, possiamo creare un’istanza passando i valori per ciascun campo:
input_dict = {"brand": "HP", "cpu": "Intel i7 1265U", "storage": "256"}computer = ComputerModel(**input_dict)
print(computer)
# brand='HP' cpu='Intel i7 1265U' storage=256 ssd=True
I dati della stringa per storage
viene forzato a un numero intero definito nel modello.
Fonte: towardsdatascience.com