django查询-列延迟加载only()、defer()
这玩意和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()的更多相关文章
- Django查询数据库性能优化
		现在有一张记录用户信息的UserInfo数据表,表中记录了10个用户的姓名,呢称,年龄,工作等信息. models文件 from django.db import models class Job(m ... 
- mybatis的一对一,一对多查询,延迟加载,缓存介绍
		一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ... 
- Django笔记十二之defer、only指定返回字段
		本篇笔记为Django笔记系列之十二,首发于公号[Django笔记] 本篇笔记将介绍查询中的 defer 和 only 两个函数的用法,笔记目录如下: defer only 1.defer defer ... 
- Mybatis源码分析--关联表查询及延迟加载原理(二)
		在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ... 
- django查询数据库无法过滤月份的解决
		我试过,当settings里的:USE_TZ = False时也可以查询,但是数据库里的时间就会显示错的 解决方法是可以再终端输入 mysql_tzinfo_to_sql /usr/share/zon ... 
- Django查询SQL语句
		Django查询SQL语句 # 1 res=models.Book.objects.all() # print(res)#<QuerySet [<Book: Book object> ... 
- Django查询 – id vs pk
		当编写django查询时,可以使用id / pk作为查询参数. Object.objects.get(id=1) Object.objects.get(pk=1) pk代表主键(primary key ... 
- Django 查询时间段 时间搜索 过滤
		Django 查询时间段 1.大于某个时间 gt now = datetime.datetime.now()start = now – datetime.timedelta(hours=23, min ... 
- django查询操作
		查询操作是Django的ORM框架中最重要的内容之一.我们建立模型.保存数据为的就是在需要的时候可以查询得到数据.Django自动为所有的模型提供了一套完善.方便.高效的API,一些重要的,我们要背下 ... 
- Django查询一个权限中包含哪些用户
		Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ... 
随机推荐
- CodeForces 1367F2 Flying Sort (Hard Version)
			题意 给一个长度为\(n\)的数组,你可以有两种操作 将某一个数放置在数组开头 将某一个数放置在数组结尾 问最小操作多少次可以得到一个非递减数列 (比\(F1\)难在\(n\)变大,且数组中元素可以有 ... 
- Python 搭建 FastAPI 项目
			一般网上的文章都是以脚本的方式写Demor的,没找到自己想要的那种项目结构型的示例(类似Java SpringBoot 创建 Model,通过 pom 进行关联配置的那种) 看了一些源码,再结合自己的 ... 
- 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析
			开心一刻 昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 问题背景 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有 ... 
- VisionPro学习笔记(3)——BeadInspectTool
			如果需要了解其他图像处理的文章,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice ... 
- package.json指南
			一.属性 name 定义项目的名称,不能以"."和"_"开头,不能包含大写字母 version 定义项目的版本号,格式为:大版本号.次版本号.修订号 descr ... 
- 解决Dependency 'fastdfs-client-java’not found
			如何能把 fastdfs的jar包安装到本地的仓库中(因为中央仓库没有FASTDFS的jar包地址) 1.首先去github上下载下来fastdfs的压缩包 下载链接 然后直接解压出来 2.使用cmd ... 
- Shell 文件或目录操作符(-e、-d、-f、-r、-w、-x)
			操作符 操作符 含义-e 判断对象是否存在(Exist),若存在则结果为真-d 判断对象是否为目录(Directory),是则为真-f 判断对象是否为一般文件(File),是则为真-r 判断对象是否有 ... 
- Jmeter将响应数据的结果保存到本地的一个文件(xls和csv)
			打印excel和csv文件的区别?? 第一种:打印excel 第二种:打印csv文件 创建beanshell后置处理器 import org.json.*;import java.io.*; Str ... 
- P8684 [蓝桥杯 2019 省 B] 灵能传输 题解
			P8684 [蓝桥杯 2019 省 B] 灵能传输 题解 Part 1 提示 题目传送门 欢迎大家指出错误并私信这个蒟蒻 欢迎大家在下方评论区写出自己的疑问(记得 @ 这个蒟蒻) Part 2 更新日 ... 
- 实验四报告: 熟悉Python字典、集合、字符串的使用
			实验目标 本实验的主要目标是熟悉Python中字典.集合.字符串的创建和操作,包括字典的创建.访问.修改和合并,集合的创建.访问以及各种集合运算,以及字符串的创建.格式化和常用操作. 实验要求 通过编 ... 
