Documentação Completa de Uso do Pydantic
O Pydantic é uma biblioteca do Python para validação de dados e gerenciamento de tipos. Ele é amplamente usado para criar modelos de dados que garantem consistência e validade.
Estrutura Básica
Um modelo no Pydantic é uma classe que herda de BaseModel. Os campos são definidos com anotações de tipo (type hints) do Python.
Tipos Suportados
O Pydantic suporta todos os principais tipos do Python e suas variações.
1. Tipos Básicos
| Tipo | Descrição | Exemplo |
|---|---|---|
int |
Números inteiros | id: int = 123 |
float |
Números de ponto flutuante | price: float = 9.99 |
str |
Cadeia de caracteres | name: str = "Alice" |
bool |
Valores booleanos | is_active: bool = True |
bytes |
Dados binários | content: bytes = b"binary data" |
Exemplo:
2. Coleções
| Tipo | Descrição | Exemplo |
|---|---|---|
List |
Lista de itens | tags: List[str] = ["python", "pydantic"] |
Tuple |
Tupla com tipos fixos | coords: Tuple[float, float] = (10.0, 20.0) |
Dict |
Dicionário com tipos de chave e valor | metadata: Dict[str, str] = {"author": "A"} |
Set |
Conjunto de valores únicos | unique_ids: Set[int] = {1, 2, 3} |
Exemplo:
3. Tipos Especiais
| Tipo | Descrição | Exemplo |
|---|---|---|
Optional |
Campo opcional | age: Optional[int] = None |
Union |
Aceita múltiplos tipos | value: Union[int, str] = "text" |
Any |
Aceita qualquer tipo | data: Any = 123 |
Literal |
Restringe a valores específicos | status: Literal["draft", "published"] |
Annotated |
Adiciona metadados para validação | title: Annotated[str, Field(max_length=50)] |
Exemplo:
4. Tipos de Data e Tempo
| Tipo | Descrição | Exemplo |
|---|---|---|
datetime |
Data e hora | created_at: datetime = datetime.now() |
date |
Apenas data | dob: date = date(1990, 1, 1) |
time |
Apenas hora | event_time: time = time(14, 30) |
timedelta |
Duração de tempo | duration: timedelta = timedelta(hours=1) |
Exemplo:
5. Validações Customizadas
Validações Com Decorador @validator
Validações no Campo com Field
6. Serialização
Converter para Dicionário
Converter para JSON
Campos Excluídos na Serialização
7. Configuração Avançada
Modo Arbitrário (Config)
Permitir campos que não foram definidos.
Modificar Comportamento de Serialização
8. Erro de Validação
Pydantic levanta uma exceção ValidationError para entradas inválidas.
9.7. Aninhamento de Modelos
Você pode incluir um modelo dentro de outro.
Se precisar de exemplos mais específicos ou recursos avançados do Pydantic, me avise!