Pydanticのデータ検証機能について
Pydanticを使用することで動的にデータの型を検証することができます。
from pydantic import BaseModel
class Time(BaseModel):
year: int
time: int
time_1 = Time(year=2020, time=10) # OK
time_2 = Time(year=2020, time="10") # OK, Pydanticが自動で型変換してくれる
time_3 = Time(year="2020", time="ten") # NG, timeはint型に変換できない
このようにデータの型を検証することで、バグを事前に回避することができます。
独自の検証ルールを作成する
Pydanticでは独自の検証ルールを作成することができます。
from pydantic import BaseModel, validator
class Time(BaseModel):
year: int
time: int
@validator("time")
def time_must_be_less_than_60(cls, v):
if v >= 60:
raise ValueError("time must be less than 60")
return v
time_1 = Time(year=2020, time=10) # OK
time_2 = Time(year=2020, time=60) # NG, timeが60以上なのでエラーが発生する
この様に独自の検証ルールを作成することで、より細かい検証を行うことができます。
ルールは以下のフォーマットで作成します。
@validator("検証対象のフィールド名")
def 検証ルール名(cls, v):
if some_rule: # 検証ルール
raise ValueError("エラーメッセージ")
return v # 検証に成功した場合は値をそのまま返す