pydantic - novel-suzukikeisuke/study GitHub Wiki

pydantic

  • バリデーションや型ヒントを実装できる
  • 入力ではなく、出力モデルの型と制約を保証するもの

具体例

from pydantic import BaseModel, EmailStr, Field

# Userモデル(型注釈)の定義
class User(BaseModel):
    id: int  # idは整数型
    name: str = Field(..., min_length=2, max_length=50)  # nameは文字列で、長さの制約あり
    email: EmailStr  # emailは正しいメールアドレス形式
    age: int = Field(..., ge=18)  # ageは整数で、18歳以上である必要がある

# 正しいデータの例
valid_data = {
    "id": 1,
    "name": "Alice",
    "email": "[email protected]",
    "age": 30
}

# モデルを使用してデータを検証
user = User(**valid_data)
print(user)

# 間違ったデータの例
invalid_data = {
    "id": "abc",  # idは整数型でなければならない
    "name": "A",  # 名前が短すぎる
    "email": "invalid-email",  # メールアドレスの形式が不正
    "age": 15  # 年齢が18歳未満
}

# 検証の実行
try:
    user = User(**invalid_data)
except ValueError as e:
    print(e)

## 参考URL