見出し画像

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の時間で処理が完了しているのは驚きですね。


実務環境では必須のメソッドと言えそうです。

ここまでお読みいただきありがとうございました!!


参考


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