
marshmallowライブラリのrequiredオプションってどう使うんですか?



marshmallowでschemaを定義するときに、
requiredオプションをつけることで必須チェックを行うことができるぞ。
✔️ 本記事のテーマ
marshmallowライブラリのrequiredオプションについて
✔️ 読者さんへの前置きメッセージ
本記事は「marshmallowライブラリのrequiredオプション」について書いています。
この記事を読むことで
「requiredオプションの使い方 や marshmallowライブラリの必須チェック」
について理解できます。
marshmallowはschema定義用のPythonライブラリです。
marshmallowライブラリでは、
各schemaに対して、その項目が必須かどうかを定義することができます。
本記事では、そんなmarshmallowの必須定義について解説していきます。
それでは、解説していきましょう。
marshmallowのrequiredオプションとは?
一言で説明すると、必須チェックの定義です。
schemaでrequiredオプションをつけることで
schemaでデータを読み込む際に
「requiredオプションが付けられた項目が必ずあること」が条件になります。
marshmallowでschemaを定義してデータを読み込む場合、
「項目があればオブジェクトに変換し、項目がなければ特に何もしない」
というのがmarshmallowのデフォルトの動作です。
ここに、requiredオプションをつけると、
「項目があればオブジェクトに変換し、項目がなければvalidation errorを発生させる」
という動作になります。
marshmallowのrequiredオプションの使い方
実際にmarshmallowのrequiredオプションを使ってみましょう。
required=True
とすることで必須チェックをONにして定義することができます。
試しに、marshmallowで以下のようなschema定義をしましょう。
from marshmallow import Schema, fields
class ParsonSchema(Schema):
name = fields.Str()
age = fields.Int()
このschemaは name, age という2項目をschemaとしてデータを読み込みます。
このようなschemaを定義することで、次のJSONを読み込むことができます。
data = ParsonSchema().load({"name": "Taro", "age": 20})
print(data)
# {'name': 'Taro', 'age': 20}
さらに、以下のような項目の欠けたJSONも読み込むことができます。
data = ParsonSchema().load({"name": "Suzuki"})
print(data)
# {'name': 'Suzuki'}
ここで、schema定義の全ての項目に、requiredオプションによる必須チェックをつけてみます。
from marshmallow import Schema, fields
class ParsonSchema(Schema):
name = fields.Str(required=True)
age = fields.Int(required=True)
このようなschema定義をすると、
先ほどの項目が欠けたデータを読み込むと、validation errorが発生します。
data = ParsonSchema().load({"name": "Suzuki"})
# marshmallow.exceptions.ValidationError: {'age': ['Missing data for required field.']}
このように、
required=Trueをつけることで対象項目を必須項目としてschema定義することができます。
marshmallowのその他のオプション
marshmallowには他にもいくつかのオプションがあります。
- allow_none
- missing
- validate
ざっと解説しましょう。
allow_noneオプション
null値を許可するかどうかのオプションです。
Trueの場合、nullを許可し、Falseの場合、nullが入ってきたらvalidation errorが発生させます。
デフォルトではFalseになっています。
なお、allow_noneオプションの詳しい解説は
「marshmallowのallow_noneオプションの使い方」の記事に書いています。
missingオプション
対象項目がなかった場合に、どのような値で埋めるかを指定するオプションです。
‘missing=0’ や ‘missing=None’ というように値を渡して使います。
なお、 ‘missing=True’ のとき、 ‘required=False’ でないと動かしたときerrorが発生します。
(当然といえば当然ですね)
なお、missingオプションの詳しい解説は
「marshmallowのmissingオプションの使い方」の記事に書いています。
validateオプション
データを読み込む際のValidationをつけるオプションです。
Validationの条件を指定します。
例えば、以下のように書くことで、dayは1~31の範囲の値のみ受け付けるようにしています。
day = fields.Int(validate=Range(min=1, max=31))
なお、validateオプションの詳しい解説は
「marshmallowのvalidateオプションの使い方」の記事に書いています。
marshmallow(Pythonライブラリ)とは?
そもそもmarshmallowとは何なのでしょうか?
marshmallowはschema定義用のPythonライブラリです。
marshmallowを使うことで、
schemaを定義してPython型以外のデータ(例えば、JSONなど)を読み込むことができます。
marshmallowを使えば、
JSONの階層的なデータ構造をそのままPythonへ読み込むことができます。
marshmallowの具体的な使い方については
「marshmallowの使い方【Pythonライブラリ】」の記事で解説しています。
marshmallowやPythonについてスキルをつけるなら
marshmallowを使ったPythonでJSONデータ読み込む方法について解説しました。
Pythonをマスターすれば、様々なことを手軽に行うことができます。
PythonについてスキルをつけるならUdemyの教材がオススメです。
>> 現役シリコンバレーエンジニアが教えるPython 3 入門 + シリコンバレー流コードスタイル
Udemyは買い切りの動画学習サービスです。
一度購入してしまえば、その教材はずっと使うことができます。
さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。
上記の教材はPythonの基礎から応用まで徹底的に解説しています。
また、現役シリコンバレーエンジニアによる本格的な解説も魅力的で、
教材の質の高さから4.4以上の評価がついています。
また、Pythonについて基礎から学ぶのであれば、オンラインスクールも良いでしょう。
オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしています。
オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。
オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。
✔️オススメのプログラミングスクール ベスト3
- 未経験からIT業界へ転職なら【DMM WEBCAMP】
※ROLANDさんがプロモーターを務める有名スクールです。無料体験の内容も充実していて人気です。 - プログラミングのオンラインスクールCodeCamp
※ここも有名なスクールです。サポート体制がしっかりしているので安心です。 - 3ヶ月間のプログラミングスクール【Tech Boost】
※比較的新しいスクールですが、そのクオリティの高さから伸びてきているスクールです。
プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。
気になった方はぜひチェックしてみて下さい〜!
コメント