Pular para o conteúdo principal

Introdução

  • Este artigo orienta você sobre validação de dados com pydantic. Pydantic é uma biblioteca Python escrita em Rust.
  • Antes de começarmos, certifique-se de que o Python e a biblioteca pydantic estejam instalados no seu ambiente. Verifique o comando de instalação do pydantic abaixo.
pip install pydantic

Criando um modelo

  • Primeiro, precisamos importar a classe e criar uma classe que herda de pydantic.BaseModel para começar a validar. No nosso exemplo, criaremos a classe Person que terá os atributos name, age e um email.
from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int
    email: str
  • Com essa classe, quando instanciar ela, o pydantic irá validar se os parametros name e email são strings e age é inteiro.

Usando o modelo

  • Agora que a criamos, vamos instanciá-la. Vamos criar um dicionário com os dados e desempacotar eles para a classe.
data = {
    "name": "John",
    "age": 19,
    "email": "john@gmail.com"
}
person = Person(**data)
  • O exemplo acima não mostrará nenhum erro pois todos os parâmetros são do tipo correto. Agora vamos fazer o teste com dados do tipo errado para confirmar se a validação funciona.
data = {
    "name": "John",
    "age": "19",
    "email": "john@gmail.com"
}
person = Person(**data)
  • O exemplo acima mostrará erro ValidationError pois age é necessário ser inteiro mas foi passado como string.

Criando Dataclass

  • Você também pode criar dataclasses que funcionam de maneira similar às dataclasses padrões do Python porém com a validação como o BaseModel.
from pydantic import dataclass

@dataclass
class Person:
    name: str
    age: int
    email: str
  • Se passarmos string para age, ela será convertida para int.
O Pydantic suporta validação recursiva, isso significa que ele quando valida modelos aninhados, ele também valida os modelos internos.Se em uma classe houver uma lista de Person, people: list[Person], ele verificará cada item e transformará em Person.

Extras

  • O Pydantic tem pacotes extras para validar e-mail e fallback de timezone. Para instalar eles, utilize os comandos abaixo:
pip install pydantic[email]
pip install pydantic[timezone]
  • Você pode instalar ambos de uma vez ao usar o seguinte comando.
pip install pydantic[email,timezone]
  • pydantic[email] trás uma classe para lidar com emails, normalizando e validando no formato user@domain.tld. Para isso, o pydantic trás a classe EmailStr para fazer a validação.
from pydantic import dataclass, EmailStr

@dataclass
class Person:
    name: str
    age: int
    email: EmailStr

Gostou desse artigo?

  • Este artigo foi feito com muito cuidado pra ajudar pessoas como você. Se ele te ajudou de alguma forma, deixa uma avaliação! Seu feedback significa muito pra gente.