Pydanticの概要
Pydanticは、Pythonのデータ検証と設定管理ライブラリで、複雑なデータ型をエレガントに扱うことで、その強力な型ヒントとバリデーション機能により、多くのPython開発者から支持を受けているライブラリです。
Pydanticを使用することのメリットは、
- データの不整合や予期せぬエラーを効率的に排除することが可能になり、より堅牢なWebアプリケーションを構築することが可能になる
- 手間のかかる設定や冗長なコードを大幅に削減し、開発者が本質的な部分に集中できる。
という部分が挙げられます。
Pydanticの使いどころ
APIリクエストとレスポンスのデータを管理
Pydanticの機能を活用して、APIリクエストとレスポンスのデータを管理します。これにより、エンドポイントに送信されるデータが正しい形式と構造を持っていることを保証します。
PydanticのDBモデル
特定のデータ構造を定義し、そのデータが適切に検証され、型変換されることを保証します。
Pydanticのバリデーション
データが定義した型と形式に一致することを保証します。
Pydanticのバリデーション設定例
項目必須チェックの例
必須チェックはPydanticのモデルで自動的に適用されます。フィールドがモデルで指定されている場合、そのフィールドは必須になります。
from pydantic import BaseModel class User(BaseModel): name: str age: int
この例では、name
とage
は必須フィールドです。もしこれらが省略された場合、Pydanticはエラーを発生させます。
項目必須チェックと最小文字数、最大文字数
フィールドの長さの制限は、Field関数を使用して指定します。
from pydantic import BaseModel, Field class User(BaseModel): name: str = Field(..., min_length=2, max_length=10)
この例では、nameは2文字以上10文字以下でなければならないと指定しています。
項目の指定を任意にする場合
フィールドが存在しなくてもよい場合はNone
を指定します。
from pydantic import BaseModel class User(BaseModel): name: str = None
この例では、nameはなくてもエラーになりません。 以下の記述方式も同じ効果となります。
name: str | None
項目必須だが値は指定なしを許可する場合
必須でないフィールドは、Optional
をデフォルト値を指定することで実現します。
PythonのtypingモジュールにあるOptional
は、値が存在しないこと(None
であること)を許可する場合に使用します。Pydanticのモデルにおいても、Optional
はフィールドがNone
であることを許可するために利用できます。
from pydantic import BaseModel from typing import Optional class User(BaseModel): name: Optional[str] = Field(...)
この例では、name
を指定しない場合はエラーになる、空文字の場合はエラーになりません。
項目指定されている場合のみ文字数の制限する
これもField関数を使用して実現できます。
from pydantic import BaseModel, Field class User(BaseModel): name: str = Field(default=None, min_length=2, max_length=10)
この例では、nameは指定されている場合のみ2文字以上10文字以下でなければならないと指定しています。
正規表現を使う場合
Field関数のregexパラメータに正規表現を指定します。
from pydantic import BaseModel, Field class User(BaseModel): email: str = Field(..., regex=r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$')
この例では、emailは正規表現によるフォーマットチェックが行われます。
以上が、Pydanticを用いたデータバリデーションの基本的な例です。それぞれの例は具体的な制限を示していますが、Pydanticはこれらを自由に組み合わせて使用することができます。
コメント