Django 批量插入數(shù)據(jù)的實(shí)現(xiàn)方法
項(xiàng)目需求:瀏覽器中訪問(wèn)django后端某一條url(如:127.0.0.1:8080/get_book/),實(shí)時(shí)朝數(shù)據(jù)庫(kù)中生成一千條數(shù)據(jù)并將生成的數(shù)據(jù)查詢出來(lái),并展示到前端頁(yè)面
views.py
from django.shortcuts import render, HttpResponse, redirect from app01 import models def get_book(request): # for循環(huán)插入1000條數(shù)據(jù) for i in range(1000): models.Book.objects.create(name='第%s本書'%i) book_queryset = models.Book.objects.all() # 將插入的數(shù)據(jù)再查詢出來(lái) return render(request,'get_book.html',locals()) # 將查詢出來(lái)的數(shù)據(jù)傳遞給html頁(yè)面
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)
get_book.html
<!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>
上述代碼書寫完畢后啟動(dòng)django后端,瀏覽器訪問(wèn),會(huì)發(fā)現(xiàn)瀏覽器會(huì)有一個(gè)明顯的卡頓等待時(shí)間,這是因?yàn)楹蠖嗽诓煌5牟僮鲾?shù)據(jù)庫(kù),耗時(shí)較長(zhǎng),大概需要等待一段時(shí)間之后才能正??吹絼倓偛迦氲?000條數(shù)據(jù),很明顯這樣操作數(shù)據(jù)庫(kù)的效率太低,那有沒有一種方式是專門用來(lái)批量操作數(shù)據(jù)庫(kù)的呢?答案是肯定的!
bulk_create方法
將views.py中原先的視圖函數(shù)稍作變化
def get_book(request): l = [] for i in range(10000): l.append(models.Book(title='第%s本書'%i)) models.Book.objects.bulk_create(l) # 批量插入數(shù)據(jù) return render(request,'get_book.html',locals())
代碼修改完畢之后其他地方無(wú)需改動(dòng),重啟django項(xiàng)目瀏覽器重新訪問(wèn),你會(huì)立馬發(fā)現(xiàn)數(shù)據(jù)量增大十倍的情況下頁(yè)面出現(xiàn)的速度比上面還快。
bulk_create方法是django orm特地提供給我們的方便批量操作數(shù)據(jù)庫(kù)的方式,效率非常高?。?!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)將圖像轉(zhuǎn)換為ASCII字符圖
使用Python進(jìn)行圖像處理,非??旖莘奖悖?jiǎn)短幾行代碼就可以實(shí)現(xiàn)功能強(qiáng)大的效果。在這篇文章中,我們將使用Python將圖像轉(zhuǎn)換為ASCII字符照,感興趣的可以了解一下2022-08-08Python實(shí)現(xiàn)刪除當(dāng)前目錄下除當(dāng)前腳本以外的文件和文件夾實(shí)例
這篇文章主要介紹了Python實(shí)現(xiàn)刪除當(dāng)前目錄下除當(dāng)前腳本以外的文件和文件夾的方法,涉及Python針對(duì)目錄及文件的刪除技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07淺談pytorch中torch.max和F.softmax函數(shù)的維度解釋
這篇文章主要介紹了淺談pytorch中torch.max和F.softmax函數(shù)的維度解釋,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python函數(shù)式編程之面向過(guò)程面向?qū)ο蠹昂瘮?shù)式簡(jiǎn)析
這一番我們要學(xué)習(xí)點(diǎn)有難度的了,因此將降低閱讀與理解難度,盡量采用大白話為你鋪墊,因?yàn)樯婕暗囊恍└拍钜彩墙梃b的其它編程語(yǔ)言的風(fēng)格,而且實(shí)際落地中存在部分爭(zhēng)議不過(guò)多學(xué)一點(diǎn),總是沒有壞處的2021-09-09python 實(shí)現(xiàn)樸素貝葉斯算法的示例
這篇文章主要介紹了python實(shí)現(xiàn)樸素貝葉斯算法的示例,幫助大家更好的理解和學(xué)習(xí)python 機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下2020-09-09python中SQLAlchemy使用前端頁(yè)面實(shí)現(xiàn)插入數(shù)據(jù)
這篇文章主要介紹了SQLAlchemy使用前端頁(yè)面實(shí)現(xiàn)插入數(shù)據(jù),文章內(nèi)容介紹詳細(xì)巨頭有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03Python3中數(shù)據(jù)校驗(yàn)機(jī)制詳解
在日常編碼環(huán)節(jié),很大比例的錯(cuò)誤處理工作和參數(shù)的輸入有關(guān),所以這篇文章主要來(lái)和大家介紹一下Python3中的數(shù)據(jù)校驗(yàn)機(jī)制,感興趣的可以了解下2024-04-04