码迷,mamicode.com
首页 > 其他好文 > 详细

Django中的惰性机制

时间:2019-11-06 16:39:58      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:执行   结果   png   shortcut   语句   follow   访问   import   backend   

惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行sql,为了测试,我们加上 sql 日志。

在 settings.py 文件上修改

 1 # 在最后添加
 2 LOGGING = {
 3     ‘version‘: 1,
 4     ‘disable_existing_loggers‘: False,
 5     ‘handlers‘: {
 6         ‘console‘:{
 7             ‘level‘:‘DEBUG‘,
 8             ‘class‘:‘logging.StreamHandler‘,
 9         },
10     },
11     ‘loggers‘: {
12         ‘django.db.backends‘: {
13             ‘handlers‘: [‘console‘],
14             ‘propagate‘: True,
15             ‘level‘:‘DEBUG‘,
16         },
17     }
18 }

在 views.py 上修改

 1 from django.shortcuts import render, HttpResponse
 2 from app01 import models
 3 from  app01.models import Book,Author,Publisher
 4  
 5 # Create your views here.
 6  
 7 def data_oper(req):
 8  
 9     obj_set = models.Book.objects.filter(id=2)
10  
11     return HttpResponse("Hello world")

浏览器访问 http://127.0.0.1:8000/data_oper/ 结果显示 sql 语句没有执行

技术图片

调用 QuerySet ,在 views.py 上修改

 1 rom django.shortcuts import render, HttpResponse
 2 from app01 import models
 3 from  app01.models import Book,Author,Publisher
 4  
 5 # Create your views here.
 6  
 7 def data_oper(req):
 8  
 9     obj_set = models.Book.objects.filter(id=2)
10     for obj in obj_set:
11         print(obj.title)
12  
13     return HttpResponse("Hello world")

浏览器访问 http://127.0.0.1:8000/data_oper/ 结果显示 sql 语句已执行

技术图片

Django中的惰性机制

标签:执行   结果   png   shortcut   语句   follow   访问   import   backend   

原文地址:https://www.cnblogs.com/zyq6/p/11805905.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!