In Django inert mechanism

Inert mechanism: Publisher.objects.all () or .filter () so only returns a QuerySet (query result set objects), it does not execute sql immediately, but before the implementation of sql when calling QuerySet, in order to test we add sql log.

Modified on the settings.py file

 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 }

Modified on 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")

Browser access  http://127.0.0.1:8000/data_oper/  results show sql statement is not executed

Call QuerySet, modified on 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")

Browser access  http://127.0.0.1:8000/data_oper/  results show sql statement has been executed

Guess you like

Origin www.cnblogs.com/zyq6/p/11805905.html