• 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>
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    pandas 流式导出excel
    django serializer 定制error_message
    selenium etree xpath使用总结
    Python之路--Python基础
    初见Flask
    Git
    MySQL补充——索引,流程控制,数据备份,python操作mysql,SQLAlchemy
    Python之路--Django--Ajax、同源策略、Jsonp、CORS
    Python之路--Django--form组件与model form组件
    Python之路--Django--中间件
  • 原文地址:https://www.cnblogs.com/ludundun/p/11973315.html
Copyright © 2020-2023  润新知