En el artículo anterior (enlace roto) 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:
- Getting started with Pydantic, a Python data validation library (enlace roto)
- Pydantic — Better Data Validation for Python (enlace roto)
- 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:
