pythonintermediate

Pydantic Models for ETL Validation

Parse and validate raw JSON records against Pydantic models before inserting into a database.

python
from pydantic import BaseModel, EmailStr, field_validator
from datetime import datetime
from typing import Optional

class OrderRecord(BaseModel):
    order_id:   int
    customer:   str
    email:      EmailStr
    amount:     float
    currency:   str = 'USD'
    created_at: datetime
    notes:      Optional[str] = None

    @field_validator('amount')
    @classmethod
    def positive_amount(cls, v: float) -> float:
        if v <= 0:
            raise ValueError('amount must be > 0')
        return round(v, 2)

raw = {'order_id':1,'customer':'Alice','email':'alice@example.com','amount':99.99,'created_at':'2024-01-15T10:00:00'}
print(OrderRecord(**raw).model_dump())

Use Cases

  • input validation
  • ETL pipeline gates
  • API data parsing

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.