Panduan Lengkap Menggunakan Pydantic: Data Validation Made Easy

# Panduan Lengkap Menggunakan Pydantic: Data Validation Made Easy Pydantic adalah library Python yang powerful untuk data validation dan settings management menggunakan Python type hints. Library ini...

By Ruby Abdullah · · tutorial
PythonPydanticFastAPIData ValidationType Hints

Panduan Lengkap Menggunakan Pydantic: Data Validation Made Easy

Pydantic adalah library Python yang powerful untuk data validation dan settings management menggunakan Python type hints. Library ini sangat populer di ekosistem Python modern, terutama digunakan oleh FastAPI, dan menjadi standar de-facto untuk validasi data.

Dalam tutorial ini, kita akan mempelajari Pydantic dari dasar hingga advanced usage dengan contoh praktis.

Mengapa Pydantic?

Keunggulan Pydantic:

  • Type Safety: Validasi otomatis berdasarkan type hints Python
  • Fast: Built dengan Rust untuk performa tinggi (Pydantic v2)
  • Easy to Use: API yang intuitif dan pythonic
  • IDE Support: Autocomplete dan type checking di IDE
  • JSON Schema: Automatic JSON schema generation
  • Widely Adopted: Digunakan FastAPI, LangChain, dan banyak library populer
  • Instalasi

    Install Pydantic v2 (Latest)

    # Install Pydantic v2
    

    pip install pydantic

    Install dengan email validation

    pip install "pydantic[email]"

    Install dengan dotenv support

    pip install "pydantic-settings"

    Verifikasi Instalasi

    import pydantic
    

    print(f"Pydantic version: {pydantic.version}")

    Should print 2.x.x

    Basic Usage: Model Pertama Anda

    1. Simple Model

    from pydantic import BaseModel
    
    

    class User(BaseModel):

    id: int

    name: str

    email: str

    age: int

    Create instance

    user = User(id=1, name="Ruby", email="ruby@rubythalib.ai", age=25)

    print(user)

    Output: id=1 name='Ruby' email='ruby@rubythalib.ai' age=25

    print(user.modeldump())

    Output: {'id': 1, 'name': 'Ruby', 'email': 'ruby@rubythalib.ai', 'age': 25}

    2. Automatic Type Conversion

    Pydantic otomatis convert tipe data yang compatible:

    from pydantic import BaseModel
    
    

    class Product(BaseModel):

    id: int

    name: str

    price: float

    instock: bool

    String akan di-convert ke int dan float

    product = Product(

    id="123", # String -> int

    name="Laptop",

    price="15000000", # String -> float

    instock="yes" # String -> bool

    )

    print(product.id, type(product.id))

    Output: 123

    print(product.price, type(product.price))

    Output: 15000000.0

    print(product.instock, type(product.instock))

    Output: True

    3. Validation Errors

    from pydantic import BaseModel, ValidationError
    
    

    class User(BaseModel):

    id: int

    name: str

    age: int

    try:

    user = User(id="notanumber", name="Ruby", age=25)

    except ValidationError as e:

    print(e)

    # Akan print error detail tentang invalid id

    Output:

    1 validation error for User
    

    id

    Input should be a valid integer, unable to parse string as an integer [type=intparsing, inputvalue='notanumber', inputtype=str]

    Field Types dan Constraints

    1. Optional Fields

    from typing import Optional
    

    from pydantic import BaseModel

    class User(BaseModel):

    id: int

    name: str

    email: Optional[str] = None # Optional dengan default None

    phone: str | None = None # Python 3.10+ syntax

    user1 = User(id=1, name="Ruby")

    print(user1.email) # None

    user2 = User(id=2, name="Ahmad", email="ahmad@example.com")

    print(user2.email) # ahmad@example.com

    2. Default Values

    from pydantic import BaseModel
    
    

    class Product(BaseModel):

    id: int

    name: str

    price: float = 0.0

    category: str = "General"

    instock: bool = True

    product = Product(id=1, name="Notebook")

    print(product.modeldump())

    {'id': 1, 'name': 'Notebook', 'price': 0.0, 'category': 'General', 'instock': True}

    3. Field dengan Constraints

    from pydantic import BaseModel, Field
    
    

    class User(BaseModel):

    Artikel Terkait

    Tutorial Reflex: Membangun Web App Full-Stack dengan Python Murni

    Reflex: Membangun Aplikasi Web Full-Stack dengan Python Murni Reflex memungkinkan Anda membangun aplikasi web lengkap — ...

    Tutorial PydanticAI: Framework Agent LLM yang Type-Safe

    Membangun Agen LLM yang Type-Safe dengan PydanticAI PydanticAI adalah framework agen dari tim di balik Pydantic, diranca...

    Tutorial Pandera: Validasi Data Statistik untuk DataFrame

    Pandera: Validasi Data Statistik untuk DataFrame pandas dan Polars Pipeline data sering gagal tanpa suara. Sebuah kolom ...

    SQLModel: ORM Modern Python untuk Aplikasi AI yang Type-Safe

    SQLModel: ORM Modern Python untuk Aplikasi AI yang Type-Safe Dalam pengembangan aplikasi AI/ML, pengelolaan data di data...