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.
Criando um modelo
- Primeiro, precisamos importar a classe e criar uma classe que herda de
pydantic.BaseModelpara começar a validar. No nosso exemplo, criaremos a classePersonque terá os atributos name, age e um email.
- Com essa classe, quando instanciar ela, o pydantic irá validar se os parametros
nameeemailsão strings eageé 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.
- 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.
- O exemplo acima mostrará erro
ValidationErrorpoisageé 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.
- Se passarmos
stringparaage, ela será convertida paraint.
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:
- Você pode instalar ambos de uma vez ao usar o seguinte comando.
- 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 classeEmailStrpara fazer a validação.
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.

