批量插入
# 需求:我們要循環插入100條數據到數據庫中,並將數據返回到前端頁面。
准備工作:
urls.py
from app01 import views
urlpatterns = [
url(r'^pl_del/',views.pl_del)
]
views.py
from app01 import models
def pl_del(request):
for i in range(100):
models.User.objects.create(name='用戶%s'%i)
user_queryset = models.User.objects.all()
return render(request,'pl_del.html',locals())
html前端頁面
<body>
{% for user_obj in user_queryset %}
<p>{{ user_obj.name }}</p>
{% endfor %}
</body>
# 我們可以在后端使用for循環循環創建數據並插入到數據庫,然后將所有的數據對象傳入到前端頁面,前端頁面再使用for循環取出所有的數據並展示。
# 我們可以看到在創建100個數據的時候都要等很久,這樣用戶體驗是很不好的。這時就要用到orm提供給我們的bulk_create方法。
bulk_create
from app01 import models
user_list = []
def pl_del(request):
for i in range(100):
user_obj = models.User(name='用戶%s'%i)
user_list.append(user_obj)
models.User.objects.bulk_create(user_list) # 使用bulk_create
user_queryset = models.User.objects.all()
return render(request,'pl_del.html',locals())
總結:
"""
第一種:循環使用create插入100條數據
第二種:循環將數據先統一添加到一個列表中,再統一添加到數據庫
很明顯第二種方式只操作了一次數據庫,速度肯定相比較要快的。
所以:
當你想要批量插入數據的時候 使用orm提供的bulk_create能夠大大的減少操作時間
"""