Django大量挿入データの実現方法


プロジェクトの需要:ブラウザでdjangoバックエンドのあるurlにアクセスします。book/)は、リアルタイムでデータベースに1000個のデータを生成し、生成したデータを検索して、フロントエンドページに表示します。
view.py

from django.shortcuts import render, HttpResponse, redirect
from app01 import models

def get_book(request):
  # for    1000   
  for i in range(1000):
    models.Book.objects.create(name=' %s  '%i)
  book_queryset = models.Book.objects.all()   #            
  return render(request,'get_book.html',locals()) #            html  
urls.py

from django.conf.urls import url
from app01 import views

urlpatterns = [
 url(r'^get_book/',views.get_book)
]

models.py

from django.db import models

class get_book(models.Model):
 title = models.CharField(max_length=64)
ゲットするbook.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  {% load static %}
  <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}" rel="external nofollow" >
  <link rel="stylesheet" href="{% static 'dist/sweetalert.css' %}" rel="external nofollow" >
  <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
  <script src="{% static 'dist/sweetalert.min.js' %}"></script>
</head>
<body>
{% for book_obj in book_queryset %}
   <p>{{ book_obj.title }}</p>
{% endfor %}
</body>
</html>

上記のコードの書き込みが完了したらdjangoバックエンドを起動します。ブラウザを訪問すると、ブラウザは明らかな待ち時間があります。これはバックエンドが止まらない操作データベースにあるため、時間がかかります。しばらく待ってから、挿入したばかりの1000本のデータが正常に見えます。このようにデータベースを操作するのは効率が低いのは明らかです。データベースを大量に操作する方法がありますか?答えは肯定です。
bulk_クリアーの方法
views.pyのもとのビュー関数を少し変えます。

def get_book(request):
  l = []
  for i in range(10000):
    l.append(models.Book(title=' %s  '%i))
  models.Book.objects.bulk_create(l) #       
    return render(request,'get_book.html',locals())
コードの修正が終わったら、他のところは変更する必要がなくて、djangoプロジェクトのブラウザを再起動して改めて訪問します。データ量が10倍に増加した場合、ページの出現速度は上記より速いです。
bulk_create方法はdjango ormがわざわざ提供してくれた便利な大量操作データベースの方式で、効率がとても高いです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。