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>