批量插入
# 需求:我们要循环插入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能够大大的减少操作时间
"""