django基础之day08,利用bulk_create 批量插入成千上万条数据

时间:2023-03-10 01:59:13
django基础之day08,利用bulk_create 批量插入成千上万条数据


bulk_create批量插入数据

models.py文件

class Book(models.Model):
title=models.CharField(max_length=32) urls.py文件 from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
#首页
url(r'^$', views.home),
#访问该url就会往book表中批量插入数据
url(r'^index/', views.index), ] views.py文件 # 批量插入数据作业
# 往数据表Book中插入1000条数据
def index(request):
'''
#1.效率低下的方法还容易插入数据异常
作为了解即可!!!!!!!!
方法一的思路:
1.通过for循环将数据插入Book表中
2.通过models将Book表中的数据全部查出来
3.通过return render将查出来的数据返回到页面上显示 方式一的后果是:数据库被插入崩掉了,插入的数据还不完整,耗时也很长
:param request:
:return: for i in range(1000):
models.Book.objects.create(title='第%s本书'%i)
book_queryset = models.Book.objects.all()
''' '''
页面传值的两种方式:
return render(request,'index.html',{'xxx':book_queryset}) #方式一
return render(request,'index.html',locals()) #方式二 ''' # 2.强烈推荐使用高效的bulk_create批量插入数据
# 利用bulk_create批量插入1万条数据
'''
方法二的解决问题思路:
1.创建一个空列表
2.利用for循环,然后往空列表中添加一个个的数据
3.一个个的数据通过models.Book(title='第%s本书'%i)填充数据
4.利用bulk_create方法批量插入列表中已经存在的数据,存入到数据库中
5.通过models查询出表中的所有数据赋值给一个对象
6.通过return render()将所有数据返回到前端页面,locals()是提交所有数据到前端 '''
book_list = []
for i in range(10000):
book_list.append(models.Book(title='第%s书' % i))
models.Book.objects.bulk_create(book_list)
#获得Book对象点批量插入数据方法,插入book_list列表的数据
book_queryset = models.Book.objects.all()
return render(request, 'index.html', locals()) # 方式二 index.html文件 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index页面批量插入数据作业</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script> </head>
<body>
{% for book in book_queryset %} <p>{{ book.title }}</p> {% endfor %} </body>
</html>