Django中的惰性机制

惰性机制: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 语句已执行

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

时间: 2024-11-03 15:35:00

Django中的惰性机制的相关文章

[Django高级]理解django中的中间件机制和执行顺序

原文来自 Understanding Django Middlewares, 这篇文章从整体上介绍了django中中间件定义,作用,和怎么样自己写中间件 –orangleliu. 注:middleware 和中间件在下面文章中含义相同,不完全翻译了 假设你已经阅读了 Django官方文档middleware部分. 下面会尽可能详尽的介绍文档中提到的知识,但是还是希望你熟悉 middleware 基本的概念. 这篇文章中我们将讨论下面内容: 什么是 middleware 什么时候使用 middle

django中的中间件机制和执行顺序

这篇文章中我们将讨论下面内容: 什么是 middleware 什么时候使用 middleware 我们写 middleware 必须要记住的东西 写一些 middlewares 来理解中间件的工作过程和要点 什么是 middleware Middlewares 是修改 Django request 或者 response 对象的钩子. 下面是Django 文档中的一段描述. Middleware is a framework of hooks into Django's request/resp

Django中的缓存机制

概述 对于中等流量网站来说,尽可能的减少开销是必要的.缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源. Django自带了一个健壮的缓存系统来保存动态页面,避免每次请求都重新计算. Django提供了不同级别的缓存策略,可以缓存特定的视图输出.可以仅仅缓存那些很难计算出来的部分.或者缓存整个网站. 将缓存存储到redis中,默认使用redis中的数据库,首先需要安装扩展库,pip install django-redis-cache. 然后在settin

django中的cookies和session机制

0.概述 (1)为什么要有cookies和session 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.而在现实网站中,那淘宝网来举例,用户将商品加入购物车和用户付款是不同的请求,但这个这连个请求需要是同一个用户,而这样的使用场景很多.总结来说,cookies和session一种用户识别用户身份的解决方案. (2)cookies 第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用

Django——惰性机制

Django惰性机制 所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象), 它并不会马上执行sql,而是当调用QuerySet的时候才执行. 了解什么是QuerySet? QuerySet是查询集,就是传到服务器上的url里面的查询内容. Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率. 也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,

Django 惰性机制

惰性机制:Publisher.Book.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行sql,为了测试,我们加上 sql 日志. 在 settings.py 文件上添加下面代码 # 在里面添加 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level'

转:django中session的实现机制

转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请求来自哪个用户.http无状态的限制为web应用程序的设计带来了许多不便,购物网站中的"购物车"功能就是一个很好的例子,当用户把商品放进购物车后,客户端必须要保存购物车的状态,否则当用户下次浏览网站时,购物车拥有的商品状态便不复存在.客户端和服务器必须有通信的媒介,方便服务器追踪客户端的状

django中的ORM系统

数据库的配置 1    django默认支持sqlite,mysql, oracle,postgresql数据库.  <1> sqlite django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqlite3 <2> mysql 引擎名称:django.db.backends.mysql 2    mysql驱动程序 MySQLdb(mysql python) mysqlclient MySQL PyMySQ

django中使用原生sql

在Django中使用原生Sql主要有以下几种方式: 一:extra:结果集修改器,一种提供额外查询参数的机制 二:raw:执行原始sql并返回模型实例 三:直接执行自定义Sql ( 这种方式完全不依赖model,前两种还是要依赖于model ) 实例: 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where=['price>50']) Book.objects.filter(publisher__name='广东