前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 惰性机制

Django 惰性机制

作者头像
py3study
发布2020-01-16 15:54:40
3520
发布2020-01-16 15:54:40
举报
文章被收录于专栏:python3

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

在 settings.py 文件上修改

代码语言:javascript
复制
# 在最后添加
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 上修改

代码语言:javascript
复制
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")

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

调用 QuerySet ,在 views.py 上修改

代码语言:javascript
复制
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")

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档