Validación de datos con Pydantic

Posted on mar 18 enero 2022 in Tutorial Python • 2 min read

En el artículo anterior se explico como validar datos usando una clase de python normal, luego usando dataclass, y el beneficio de usarlo.

Ahora se explicará la validación usando pydantic, su documentación la pueden encontrar en el siguiente enlace

Pydantic es una herramienta de validación de datos y gestión de configuración usando notación de tipos en Python. Se puede usar en Python a partir de la versión 3.6.

Para instalar pydantic se usa pip:

pip install pydantic 

Pydantic vs Dataclasses vs clase regular de python

Clase regular de python

Como se explico en el artículo anterior, se define los atributos de la clase en este caso producto:

class Producto():
  def __init__(self, titulo, descripcion, precio, publicado, id):
    self.titulo = titulo
    self.descripcion = descripcion
    self.precio = precio
    self.publicado = publicado 
    self.id = id

Python dataclase

from dataclasses import dataclass 
@dataclass 
class Producto:
  titulo: str
  descripcion: str
  precio: int
  publicado: bool
  id: int

Pydantic

Para el caso de pydantic se importa BaseModel de pydantic y Optional de typing.

from pydantic import BaseModel
from typing import Optional 
from random import  randrange 

class Producto(BaseModel):
    titulo: str
    descripcion: str
    precio: int
    publicado: Optional[bool]= True 
    id: Optional[int]= None 

A diferencia de dataclass, con pydantic se puede definir si un dato es opcional o no, y su valor por defecto. En el caso del campo publicado es boleano, opcional y valor True por defecto, en el caso del id es un entero opcional, con valor por defecto None.

Se define dato de ejemplo:

dato = {
    "titulo": "Xiaomi Mi 10T",
    "descripcion": "Xiaomi",
    "precio": 300, 
    "id": randrange(0, 100000000) 
}

Se valida el dato con la clase Producto y se imprime el contenido:

producto = Producto(**dato)

print(producto)

titulo='Xiaomi Mi 10T' descripcion='Xiaomi' precio=300 publicado=True id=59872935

Pydantic da más versatilidad en la validación de los datos, gracias a Pydantic se podrá validar las entradas de datos de un endpoint de un API, en próximo artículo se explicará como usando FastAPI.

Este artículo se basa en los siguientes artículos:

  1. Getting started with Pydantic, a Python data validation library
  2. Pydantic — Better Data Validation for Python
  3. Documentación de Pydantic

¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV

O Escaneando el código QR desde la billetera:

17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV