Django | 批量插入数据(bulk_create)

批量插入

# 需求:我们要循环插入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能够大大的减少操作时间
"""
posted @ 2022-03-08 16:38  JasonBorn  阅读(825)  评论(0编辑  收藏  举报