【Django】データの一括作成・一括更新を実行する

Djangoのデータを一括作成や一括更新したい時はないでしょうか?

いちいちfor文で回してsave()することは、パフォーマンス(実行速度)も悪く、何度もデータベースにsave()するのは気持ちが悪い状況です。

今回はそんなデータの一括更新ができるメソッドを紹介します。

環境

環境

・Python3.8

・Django3.2

for文でcreateは悪手である

実際に例に出して紹介します。

例えばとあるブログのモデルがあって、一度にダミー記事を一括作成したいと考えました。

models.py

これをviews側の処理で、一度に1000件を一括作成します。

その時for文とcreate()を使用してかくとこんな感じのコードになると思います。

1000件なのでrange = 1000と変数を置きます。

そして2行目からfor文とcreate()でデータを生成していきます。

非常にシンプルですが、パフォーマンス(実行速度)も悪く、何度もデータベースにcreate()するのは気持ちが悪いです。

悪手な理由

・パフォーマンスが悪い

・何度も何度もsave()するのが気持ち悪い

ではどうすれば良いのかを次で紹介します。

データの一括作成

先ずはデータを一括作成するbulk_create()メソッドを使用します。

今回も1000件のダミー記事を作成することにします。

bulk_createの使い方

1行目でblog_itemsという空のリストを用意します。

for文で回しながら、blog_itemsにappend(追加)をしていきます。

最後にbulk_createを使用して一括作成します。

こっちの方がパフォーマンスもよく気持ち悪くないですね。

djangoチュートリアル公式でも推薦されています。

Djangoチュートリアル公式

データの一括更新

次にデータを一括更新する方法を紹介しますが、一括更新を実行するにはbulk_update()メソッドを使用します。

bulk_updateメソッドの第一引数にはobjectsを、第二引数にはfieldsを指定します。

bulk_updateの使い方

1行目で呼び出した、blog_qsをfor文で、全てFalseにするまでは一緒ですが最後にbulk_updateを使用して一括更新します。

こっちの方がパフォーマンスもよく気持ち悪くないですね。

djangoチュートリアル公式でも推薦されています。

djangoチュートリアル公式

最後に

いかがでしたでしょうか。

以上が、「【Django】データの一括更新を実行する【bulk_update】」の紹介記事になります。

プログラミング学習を効率良く進めるには…

私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。

何から手をつけていいのか、わからない。

プログラミングを始めてみたけど、エラーが解決できない。

そしてネットで調べていくうちに膨大な時間が過ぎていきました。

私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。

1. いつまでもダラダラとやらないで、目標を決定して短期集中する

2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう

.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。

カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?

また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です