![見出し画像](https://assets.st-note.com/production/uploads/images/81954795/rectangle_large_type_2_9e3fdc39a3ee55c5a5749d2a5ae906dd.jpeg?width=1200)
Django_[bulk_create]メソッドでDBにオブジェクトを一括作成 #216日目
Djangoではモデルを通してオブジェクトをデータベースに登録することが可能です。基礎的なコードとしては、以下のようにcreate()を使います。
Model.objects.create()
これでデータベースに問題なく登録されますが、膨大な数を処理しようとすると、これのままでは処理に時間がかかる、という弱点があります。
膨大な数を処理とは、例えば以下のように1回ずつcreate()しながらfor文を回す形です。
for i in range(100000):
new_object = Modelname() # カラムにtitleとbodyがあるとする
new_object.title = f'{i}_article'
new_object.body = i
Modelname.objects.create(new_object)
これを以下のようにbulk_create()で実行するようにすれば、処理スピードが飛躍的に向上します。
new_objects = []
for i in range(100000):
new_object = Modelname() # カラムにtitleとbodyがあるとする
new_object.title = f'{i}_article'
new_object.body = i
new_objects.append(new_object)
Modelname.objects.bulk_create(new_objects)
参考ブログでの検証結果では、10万件のオブジェクト登録に対してcreate()では107.63秒かかり、bulk_create()では1.36秒で完了したとのことでした。約100分の1の時間で処理が完了しているのは驚きですね。
実務環境では必須のメソッドと言えそうです。
ここまでお読みいただきありがとうございました!!
参考
この記事が気に入ったらサポートをしてみませんか?