Nhảy đến nội dung chính

Pydantic

Pydantic là một thư viện Python dùng để:

  • Tạo các class dữ liệu kiểu an toàn (type-safe)

  • Tự động validate dữ liệu (rất mạnh)

  • Hỗ trợ dễ dàng chuyển từ dict → object và ngược lại

  • Được dùng rất phổ biến trong FastAPI, Django, các hệ thống lớn

Cài đặt

pip install pydantic

So sánh nhanh với dataclass

Tính năng dataclass pydantic
Tự validate dữ liệu
Chuyển dict dễ ✅ (tốt hơn)
Bảo vệ kiểu dữ liệu
Xử lý dữ liệu lồng Thủ công ✅ Tự động
Hỗ trợ JSON Thủ công

Ví dụ cơ bản với BaseModel

from pydantic import BaseModel

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

p = Person(name="Linh", age=25)
print(p)
#name='Linh' age=25

Tự động validate dữ liệu

p = Person(name="Linh", age="25")
print(p.age)  # ✅ Tự động convert '25' → 25 (int)

Nếu không thể convert được, sẽ báo lỗi:

p = Person(name="Linh", age="abc")  # ❌ ValidationError

Chuyển đổi giữa dict và JSON

# Chuyển thành dict
print(p.dict())

# Chuyển thành JSON
print(p.json())

Lồng model bên trong model

class Address(BaseModel):
    city: str
    country: str

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

u = User(username="nam", address={"city": "Hanoi", "country": "VN"})
print(u)
Pydantic tự động biến dict thành object Address – bạn không cần viết tay như dataclass.

Tuỳ chỉnh kiểm tra nâng cao (validators)
from pydantic import validator

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

    @validator('age')
    def age_must_be_positive(cls, v):
        if v <= 0:
            raise ValueError('Age must be positive')
        return v

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft