Pydantic: Validação de Dados Simplificada em Python

Olá programadoras e programadores! ❤

Hoje vamos ver um assunto bem interessante e importante!

Se você trabalha com Python e precisa lidar com dados de diferentes fontes, como APIs, bancos de dados, formulários web ou arquivos JSON, já deve ter enfrentado problemas comuns: tipos de dados inesperados, validações manuais e conversões repetitivas.

É exatamente aí que entra o Pydantic, uma biblioteca poderosa que torna o gerenciamento de dados mais seguro, rápido e elegante.

Neste artigo, vamos explorar como o Pydantic pode transformar a maneira como você lida com validação de dados.

Siga nossa página no Linkedin e no Instagram e ajude a divulgar nosso conteúdo🥰


O que é o Pydantic?

O Pydantic é uma biblioteca Python voltada para validação de dados e criação de modelos tipados.

Ele permite definir estruturas de dados claras, validar os tipos automaticamente e até converter valores quando possível.

Desenvolvida com foco em performance e facilidade de uso, ela permite definir modelos de dados usando classes Python comuns e aproveita as anotações de tipo para realizar validação, serialização e documentação automática.

Com isso, reduzimos os bugs e ganhamos confiança de que nosso sistema está lidando com dados consistentes.

Resumindo: Pydantic é para Python o que os schemas são para bancos de dados: garante que os dados “entrem e saiam” no formato certo.

A principal filosofia do Pydantic é simples: “validação de dados usando Python type hints“. Isso significa que podemos definir a estrutura dos dados de forma intuitiva e deixar que a biblioteca cuide de toda a complexidade da validação.

Instalação

A instalação é simples através do pip:

pip install pydantic

Para projetos que requerem funcionalidades extras (como validação de email), você pode instalar com dependências opcionais:

pip install pydantic[email]

Modelos Básicos

O coração do Pydantic são os modelos – classes Python que herdam de BaseModel:

from pydantic import BaseModel
from typing import Optional
from datetime import datetime

class Usuario(BaseModel):
    nome: str
    email: str
    idade: int
    ativo: bool = True
    data_cadastro: Optional[datetime] = None

Por que usar Pydantic?

  1. Validação automática
    Em vez de escrever dezenas de linhas verificando se idade é um número ou email tem formato correto, o Pydantic faz isso para nós:
from pydantic import BaseModel, EmailStr

class User(BaseModel):
    id: int
    name: str
    email: EmailStr
    age: int

user = User(id="123", name="Alice", email="alice@example.com", age="25")
print(user)

Saída:

id=123 name='Alice' email='alice@example.com' age=25

Repare que o Pydantic converte automaticamente strings em inteiros quando faz sentido.

  1. Integração com APIs e frameworks
    Se você usa FastAPI, por exemplo, Pydantic é a base para criar endpoints seguros e gerar documentação automática. Isso significa que seus clientes e desenvolvedores sempre saberão quais campos esperar.
  2. Conversão e serialização fáceis
    Com o Pydantic, transformar objetos Python em JSON é trivial:
print(user.json())
# {"id": 123, "name": "Alice", "email": "alice@example.com", "age": 25}

Isso é ideal para enviar dados para front-ends, microserviços ou salvar em arquivos.

  1. Segurança e consistência de dados
    Se dados externos estiverem incorretos, o Pydantic lança erros claros, evitando falhas silenciosas que podem se espalhar pelo sistema.
User(id="abc", name="Bob", email="bob@", age="vinte")
# ValueError: invalid literal for int() with base 10: 'abc'
# EmailError: value is not a valid email address

Recursos avançados do Pydantic

  • Campos opcionais e padrão:
from typing import Optional

class User(BaseModel):
    name: str
    age: Optional[int] = 18
  • Validação customizada:
from pydantic import validator

class User(BaseModel):
    name: str
    age: int

    @validator('age')
    def idade_maior_que_zero(cls, v):
        if v <= 0:
            raise ValueError('A idade deve ser maior que zero')
        return v
  • Modelos aninhados:
class Address(BaseModel):
    street: str
    city: str

class User(BaseModel):
    name: str
    address: Address

Quando não usar Pydantic

Apesar de poderoso, Pydantic não é necessário para tudo. Para scripts simples ou manipulação de dados temporários, pode ser um exagero. Use-o quando houver validação consistente, segurança e interoperabilidade de dados.

Conclusão

Pydantic transforma a maneira como lidamos com dados em Python, fornecendo tipagem, validação e conversão automáticas.

Ele é especialmente útil em aplicações web, APIs e qualquer projeto que dependa de dados externos ou dinâmicos.

Se você ainda valida dados manualmente com if/else ou funções complexas, vale a pena experimentar Pydantic e ver o quanto seu código pode ficar mais limpo, seguro e profissional.

A biblioteca continua evoluindo rapidamente, com uma comunidade ativa e excelente documentação. Se você ainda não experimentou Pydantic em seus projetos, definitivamente vale a pena investir tempo para aprender esta ferramenta poderosa.

💡 Comenta aqui se você usa Pydantic nos seus projetos, ou se já tinha ouvido falar.

Até o próximo post!