見出し画像

【FastAPI】モデルとスキーマの属性名は揃えよう

ただのメモ・・・

FastAPIの公式チュートリアルにあるけれど、Pydanticでのバリデーションや自動型変換をしてくれるモデル(クラス)定義をスキーマと呼び、SQLAlchemy側でDBにマッピング(ORM)されるオブジェクトのモデル(クラス)定義をモデル、と使い分けてます。

この辺は、どこかの記事にも書きましたが、今回はエラーがなかなか抜けなかったので、備忘録がてら走り書き・・・

どうも、モデルの属性名とモデルからインスタンス生成するためにパラメータを渡す際に経由しているスキーマの属性名が一致していなかったために、Typeerrorが発生していた模様。

例えば、Pydantic側のスキーマ定義に

UserSchema(userId, userName)

SQLAlchemy側のモデル定義に

User(user_id, user_name)

とかにしていると、pydanticのスキーマインスタンスからdictを生成し、そのdictをモデルのパラメータとして渡す際に、エラーが出るみたいなので、属性名は揃えた方が無難です、というメモ


この記事が気に入ったらサポートをしてみませんか?