这玩意和sqlalchemy的几乎一样。

only():只加载给定的列,其他列只有在使用时会发起二次查询

defer():不加载指定的列,刚好和only()相反。

实例:

>>> ret = BookInfo.objects.get(id=1).only("name")
#1、先导入connection, 获取django查询的所有sql语句
>>> from django.db import connection # 可以明显的看到,django只查询了name列的数据。
>>> connection.queries[-1]
{'sql': 'SELECT `bookinfo`.`id`, `bookinfo`.`name` FROM `bookinfo` LIMIT 21', 'time': '0.000'}
>>> # 当我们使用其他列时,django会再次使用对象的主键来获取对应的值
>>> ret.is_delete
False
>>> connection.queries[-1]
{'sql': 'SELECT `bookinfo`.`id`, `bookinfo`.`is_delete` FROM `bookinfo` WHERE `bookinfo`.`id` = 1 LIMIT 21', 'time': '0.000'}
>>>

特别注意,调用模型了的save()方法,只会保存加载过的列

>>> ret.readcount=888
>>> ret.save()
**# 可以看到,压根就没有更新readcount的值!!!!**
>>> connection.queries[-1]
{'sql': "UPDATE `bookinfo` SET `name` = '射雕英雄传' WHERE `bookinfo`.`id` = 1", 'time': '0.016'}

django查询-列延迟加载only()、defer()的更多相关文章

  1. Django查询数据库性能优化

    现在有一张记录用户信息的UserInfo数据表,表中记录了10个用户的姓名,呢称,年龄,工作等信息. models文件 from django.db import models class Job(m ...

  2. mybatis的一对一,一对多查询,延迟加载,缓存介绍

    一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...

  3. Django笔记十二之defer、only指定返回字段

    本篇笔记为Django笔记系列之十二,首发于公号[Django笔记] 本篇笔记将介绍查询中的 defer 和 only 两个函数的用法,笔记目录如下: defer only 1.defer defer ...

  4. Mybatis源码分析--关联表查询及延迟加载原理(二)

    在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...

  5. django查询数据库无法过滤月份的解决

    我试过,当settings里的:USE_TZ = False时也可以查询,但是数据库里的时间就会显示错的 解决方法是可以再终端输入 mysql_tzinfo_to_sql /usr/share/zon ...

  6. Django查询SQL语句

    Django查询SQL语句 # 1 res=models.Book.objects.all() # print(res)#<QuerySet [<Book: Book object> ...

  7. Django查询 – id vs pk

    当编写django查询时,可以使用id / pk作为查询参数. Object.objects.get(id=1) Object.objects.get(pk=1) pk代表主键(primary key ...

  8. Django 查询时间段 时间搜索 过滤

    Django 查询时间段 1.大于某个时间 gt now = datetime.datetime.now()start = now – datetime.timedelta(hours=23, min ...

  9. django查询操作

    查询操作是Django的ORM框架中最重要的内容之一.我们建立模型.保存数据为的就是在需要的时候可以查询得到数据.Django自动为所有的模型提供了一套完善.方便.高效的API,一些重要的,我们要背下 ...

  10. Django查询一个权限中包含哪些用户

    Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ...

随机推荐

  1. MQTT vs. XMPP,哪一个才是IoT通讯协议的正解

    MQTT vs. XMPP,哪一个才是IoT通讯协议的正解 这是个有趣的话题! 先来聊几个小故事. 关于我和MQTT 我在人生第一个IoT项目里,第一次接触到MQTT协议. 我很快就理解了这个协议.因 ...

  2. KMP字符串对比算法及next数组计算

    (注:该贴主要运用python实现该算法) 先谈谈KMP算法吧.KMP算法的全称是Knuth-Morris-Pratt 算法,它是用来进行字符串查找,即在某个主字符串里面找到某个特定子字符串.但是好像 ...

  3. 使用docker搭建seafile服务器

    工作需要在单位和家里的不同电脑上同步指定文件夹及其内容.对比了一些解决方案,最终还是选择熟悉的seafile来做. 需要按照官方文档进行seafile的安装,选择官方推荐的docker方式快速部署. ...

  4. Selenium+dddocr轻松解决Web自动化验证码识别

    大家好,我是狂师,今天给大家推荐一款验证码识别神器:dddocr. 1.介绍 dddocr是一个基于深度学习的OCR(Optical Character Recognition,光学字符识别)库,用于 ...

  5. JUC并发编程(1)—CompletableFuture详解

    @ 目录 CompletableFuture介绍 1.创建异步任务 2.CompletableFuture API ①. 获得结果和触发计算(get.getNow.join.complete) ②. ...

  6. 关于Word转PDF的几种实现方案

    在.NET中,你可以使用Microsoft.Office.Interop.Word库来进行Word到PDF的转换.这是一个示例代码,但请注意这需要在你的系统上安装Microsoft Office. 在 ...

  7. Go语言系列——Go语言介绍

    文章目录 01-Go语言介绍 一 Go语言介绍 二 Go语言特性 三 Go语言发展(版本/特性) 四 Go语言应用 谁在用 Google Facebook 腾讯 百度 京东 小米 360 应用领域 五 ...

  8. Chapter 6. Build Script Basics

    Chapter 6. Build Script Basics 6.1. Projects and tasks Everything in Gradle sits on top of two basic ...

  9. FreeRTOS 中的调度算法

    FreeRTOS 中的调度算法 01 调度算法概述 调度算法的作用: 实时系统的调度需求 相应时间要求 任务优先级 资源利用率 FreeRTOS 调度算法的目标 提供可预测的任务调度 实现任务的优先级 ...

  10. Travelling Salesman and Special Numbers

    prologue 模拟赛的一道题,结果没做出来,丢大人,败大兴.所以过来糊一篇题解. analysis 我们看到数据范围这么大,那么肯定不可以一个一个遍历(废话),所以就要考虑这个题目的性质. 我们先 ...