django-数据库的查询集
1.curd(增删改查)
对于数据库,作为一名开发人员并不会感到陌生,那么数据库中的查询集是怎么一回事呢?
2.数据库的查询集
查询集这个概念存在django框架中,存在于ORM(object relational mapping)对象关系映射。当调用以下的过滤方法时,将会返回一个查询结果集
- all():返回所有数据。
- filter():返回满足条件的数据。
- exclude():返回满足条件之外的数据。
- order_by():对结果进行排序
对查询集可以再次调用过滤器进行过滤,如:BookInfo.objects.filter(bread__gt=30).order_by('bpub_date')
查询过滤器在这里的存在就是一种拥有限制条件的筛选器,通过零个、一个或者多个过滤器来对相对于的数据进行相对应的筛选,从而获取所需的数据
从原生sql语句来说:从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句
判断某一个查询集中是否有数据:exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。
查询集的两大特性:
(1)惰性查询
  当执行如下语句时,并未进行数据库查询,只是创建了一个查询集只有当执行的遍历迭代时,才算是查询了数据库。如只是建立了一个查询集qs = BookInfo.objects.all()  
(2)缓存
当第一次查询数据库时,会把查询的结果缓存下来,之后再次调用时,就会直接从缓存中调用,从而减少查询数据库的次数。
减少查询数据库次数的好处?数据库一旦查询次数增加,那么负载就会过高,容易产生问题
可以对查询集进行切片和取下标等操作,等同于sql中的limit和offset子句。但是不支持负数索引操作,对查询集进行切片操作后,将会获得一个新的查询集,但是同理,也不会进行数据库的查询,仅仅是创建了一个查询集罢了。
如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。
示例:获取第1、2项,运行查看:qs = BookInfo.objects.all()[0:2]
django-数据库的查询集的更多相关文章
- Django 聚合与查询集API实现侧边栏
		本文从Django官方文档总结而来,将聚合的主要用法和查询集的常见方法做一归纳. 聚合 1. 聚合的产生来源于django数据库查询,通常我们使用django查询来完成增删查改,但是有时候需要更复杂的 ... 
- Flask入门数据库的查询集与过滤器(十一)
		1 查询集 : 指数据查询的集合 原始查询集: 不经过任何过滤返回的结果为原始查询集 数据查询集: 将原始查询集经过条件的筛选最终返回的结果 查询过滤器: 过滤器 功能 cls.query.filte ... 
- 查询集 QuerySet和管理器Manager
		查询集 QuerySet 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. ... 
- 查询集 QuerySet
		1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): a ... 
- 查询集API  -- Django从入门到精通系列教程
		该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ... 
- Django 查询集简述
		通过模型中的管理器构造一个查询集(QuerySet),来从数据库中获取对象.查询集表示从数据库中取出来的对象的集合.它可以含有零个.一个或者多个过滤器.过滤器基于所给的参数限制查询的结果. 从SQL ... 
- django查询集API
		本节将详细介绍查询集的API,它建立在下面的模型基础上,与上一节的模型相同: from django.db import models class Blog(models.Model): name = ... 
- django查询集-17
		当查询结果是多个的时候,django-ORM会返回一个 查询集(QuerySet) ,表示从数据库中获取对象的 集合 . 查询集可以使用过滤器进行再次处理. 例如查询阅读量大于20且评论数大于30的书 ... 
- django  查询集 API
		filter 表示=, 返回一个新的QuerySet,包含与给定的查询参数匹配的对象.exclude 表示!=. 返回一个新的QuerySet,它包含不满足给定的查找参数的对象. annotate 使 ... 
随机推荐
- vue-router 设置默认路由
			加入 {path: '/', redirect: 'ratings'},vue 1.0版本版本使用go,但是在2.0中是用router.go(‘/ratings’);会一直刷新 
- iOS性能优化未阅文章归档
			https://www.aliyun.com/jiaocheng/349583.html https://www.2cto.com/kf/201706/648929.html 理解UIView的绘制 ... 
- JS中通过LayUI的layer.prompt弹出文本输入层,多个按钮回调获取输入值
			JS中通过LayUI弹出文本输入层,多个按钮回调: 如图所示,输入文本后点击通过/不通过按钮回调获取输入文本值的实现: 实现JS: layer.prompt({ formType: 2, // 弹出文 ... 
- 机器学习实战笔记--AdaBoost(实例代码)
			#coding=utf-8 from numpy import * def loadSimpleData(): dataMat = matrix([[1. , 2.1], [2. , 1.1], [1 ... 
- HDU 1002 A + B Problem II( 高精度加法水 )
			链接:传送门 题意:A + B 高精度,板子题 /************************************************************************* & ... 
- HDU 1023 Train Problem II( 大数卡特兰 )
			链接:传送门 题意:裸卡特兰数,但是必须用大数做 balabala:上交高精度模板题,增加一下熟悉度 /************************************************ ... 
- C# 上位机的USB设备拔插检测
			我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ... 
- 【codeforces 505D】Mr. Kitayuta's Technology
			[题目链接]:http://codeforces.com/problemset/problem/505/D [题意] 让你构造一张有向图; n个点; 以及所要求的m对联通关系(xi,yi) 即要求这张 ... 
- jvm 虚拟机参数_栈内存分配
			1.参数 -Xss 指定线程最大的栈空间,整个参数也直接决定了函数可调用的最大深度 2.测试代码 private static int count; public static void addCou ... 
- Ubuntu 15.10 安装推荐链接
			整理一些Ubuntu 15.10系统安装使用的链接. Ubuntu官网下载:http://www.ubuntu.com/download/desktop,目前最新的版本是Ubuntu 15.10. 网 ... 
