Como usar o Pydantic para validação de dados em Python

Neste tutorial você vai aprender como usar o Pydantic, com exemplos práticos e linguagem acessível.

O Pydantic é uma biblioteca Python para validação de dados baseada em type hints. Você define uma classe que herda de BaseModel com os campos e seus tipos, e o Pydantic valida automaticamente os dados na criação do objeto, convertendo tipos quando possível e gerando erros claros quando os dados são inválidos. É muito usado com FastAPI e em APIs.

Aprenda a criar sistema mais confiáveis com esta biblioteca que ajuda a evitar erros comuns, converte tipos automaticamente e simplifica a integração com JSON. O Pydantic é uma ferramenta poderosa do Python que facilita a validação de dados, especialmente em projetos mais longos.

Continue lendo pra entender como ele funciona!

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O que é o Pydantic e para que serve?

O Pydantic é uma biblioteca Python que permite validar tipos de dados de um jeito mais fácil. Ele é muito usado em frameworks como FastAPI e LangChain, garantindo que os dados inseridos no programa sigam o formato esperado.

As principais funções do Pydantic são:

  • Validação de tipos: Garante que os dados correspondam ao tipo definido (ex.: número, texto).
  • Detecção de erros: Identifica problemas logo na criação dos dados, não durante a execução.
  • Integração com JSON: Facilita a conversão de objetos Python para JSON e vice-versa.

Como instalar o Pydantic de forma simples?

Para começar, você precisa instalar o Pydantic. Abra o terminal e execute:

pip install pydantic

(Certifique-se de ter o Python instalado na versão 3.7 ou superior).

Depois que instalar o Pydantic pelo terminal, você já vai poder importar a biblioteca no seu código com import pydantic.

Como criar classes com validação usando o Pydantic?

O Pydantic usa o conceito de BaseModel para criar classes que validam dados automaticamente. Vamos criar uma classe para representar um usuário de um sistema de corretora, com nome, e-mail e investimento.

Dica: Se quiser entender classes, leia nosso artigo que ensina tudo sobre classes do zero!

Exemplo de código usando classes

Python
from pydantic import BaseModel

class Usuario(BaseModel):
    nome: str
    email: str
    investimentos: float
  • nome: str | Define que o campo deve ser uma string.
  • email: str | Também uma string, mas pode ser validado como e-mail (ver adiante).
  • investimentos: float | Um número que pode ter casas decimais.

Como criar e usar um objeto com Pydantic?

Depois de definir a classe, você pode criar um objeto e usá-lo como faria com um dicionário ou classe padrão.

(No artigo sobre classes linkado acima, também ensinamos o que são objetos!)

Exemplo de código

Python
from pydantic import BaseModel

class Usuario(BaseModel):
    nome: str
    email: str
    investimentos: float

# Criando um usuário
usuario = Usuario(nome="João", email="joao@email.com", investimentos=10000)

# Exibindo informações
print(usuario)  # nome='João' email='joao@email.com' investimentos=10000.0
print(usuario.email)  # joao@email.com

# Editando investimentos
usuario.investimentos += 1000
print(usuario.investimentos)  # 11000.0

O Pydantic não complica o uso dos dados, mas adiciona validação para evitar erros.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Como o Pydantic evita erros ocultos?

Sem o Pydantic, um erro comum é atribuir um tipo errado (ex.: texto em vez de número) a uma variável, o que só é percebido mais tarde, em uma operação como uma soma.

O Pydantic resolve isso de três formas:

FuncionalidadeBenefício
Conversão automáticaTransforma textos numéricos (ex.: "10000") em números automaticamente.
Validação na criaçãoDetecta erros de tipo logo ao criar o objeto, não durante a execução.
Mensagens clarasIndica a linha exata e o campo com erro, facilitando a correção.

Por exemplo, se você tentar criar um usuário com um investimento inválido:

Python
# Tentativa com erro
usuario = Usuario(nome="João", email="joao@email.com", investimentos="texto")

O Pydantic retorna um erro de validação, apontando que investimentos deve ser um float, não um texto.

Como usar validações avançadas, como e-mails?

Agora vamos ver o que citamos na primeira seção.

Uma coisa muita útil do Pydantic é que ele oferece validadores específicos, como o EmailStr, para garantir que um campo siga o formato de e-mail.

Exemplo de código

Python
from pydantic import BaseModel, EmailStr

class Usuario(BaseModel):
    nome: str
    email: EmailStr
    investimentos: float

# Erro: e-mail inválido
usuario = Usuario(nome="João", email="joao", investimentos=10000)

Se o e-mail não for válido (ex.: "joao" em vez de "joao@email.com"), o Pydantic retorna um erro de validação, indicando que o campo email não segue o formato esperado.

Como integrar o Pydantic com JSON?

O Pydantic simplifica a conversão de objetos para JSON, útil para APIs e comunicação entre sistemas.

Exemplo de código

Python
from pydantic import BaseModel, EmailStr

class Usuario(BaseModel):
    nome: str
    email: EmailStr
    investimentos: float

usuario = Usuario(nome="João", email="joao@email.com", investimentos=10000)

# Converter para dicionário
dicionario = usuario.model_dump()
print(dicionario)  # {'nome': 'João', 'email': 'joao@email.com', 'investimentos': 10000.0}

# Converter para JSON
json_data = usuario.model_dump_json()
print(json_data)  # {"nome":"João","email":"joao@email.com","investimentos":10000.0}
  • model_dump(): Converte o objeto em um dicionário Python.
  • model_dump_json(): Gera uma string JSON formatada corretamente, pronta para uso em APIs.

Quando e por que usar o Pydantic no seu projeto?

O Pydantic é ideal para projetos mais longos e que precisam de muita precisão nos tipos. Com o que vimos aqui é possível aumentar muito a confiabilidade de APIs ou sistemas mais complexos.

Suas vantagens incluem:

  • Evita erros em projetos grandes: Detecta problemas de tipo antes que causem falhas.
  • Facilita manutenção: Mensagens de erro claras reduzem o tempo de depuração.
  • Integração com frameworks: Usado por FastAPI e LangChain para validação de dados.
  • Flexibilidade: Suporta validadores personalizados e integração com JSON.

Se você está começando, o Pydantic pode parecer algo a mais para se preocupar, mas a verdade é que em projetos maiores ele economiza tempo, evitando erros difíceis de rastrear manualmente.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos

Perguntas frequentes

1. O que é o Pydantic e para que serve?

É uma biblioteca Python de validação de dados que usa type hints. Você descreve a estrutura esperada em uma classe BaseModel, e o Pydantic valida e converte os dados automaticamente, garantindo que cheguem no formato certo. É muito usada em APIs e configurações.

2. Como instalar o Pydantic?

Instale com pip install pydantic. Depois, importe o BaseModel (from pydantic import BaseModel) e crie suas classes de modelo. Na versão 2, há também o pydantic-core, instalado junto, que torna a validação ainda mais rápida.

3. Como validar dados com o Pydantic?

Crie uma classe herdando de BaseModel com os campos e tipos (por exemplo, nome: str, idade: int) e instancie passando os dados. Se algo estiver fora do tipo esperado, o Pydantic gera um erro de validação detalhado; caso contrário, devolve o objeto pronto.

4. Pydantic converte os tipos automaticamente?

Sim, quando é seguro. Se um campo é int e você passa '21' (string), o Pydantic converte para 21. Quando a conversão não é possível, ele levanta um erro de validação, deixando claro qual campo está incorreto e por quê.