欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django 惰性机制

程序员文章站 2022-11-03 19:36:31
惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行sql,为了测试,我们加上 sql 日志。 在 settings.py 文件上修改 在 views.py ......

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

在 settings.py 文件上修改

# 在最后添加
logging = {
    'version': 1,
    'disable_existing_loggers': false,
    'handlers': {
        'console':{
            'level':'debug',
            'class':'logging.streamhandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': true,
            'level':'debug',
        },
    }
}

在 views.py 上修改

from django.shortcuts import render, httpresponse
from app01 import models
from  app01.models import book,author,publisher

# create your views here.

def data_oper(req):

    obj_set = models.book.objects.filter(id=2)

    return httpresponse("hello world")

浏览器访问 结果显示 sql 语句没有执行
Django 惰性机制
调用 queryset ,在 views.py 上修改

rom django.shortcuts import render, httpresponse
from app01 import models
from  app01.models import book,author,publisher

# create your views here.

def data_oper(req):

    obj_set = models.book.objects.filter(id=2)
    for obj in obj_set:
        print(obj.title)

    return httpresponse("hello world")

浏览器访问 结果显示 sql 语句已执行
Django 惰性机制