Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的。
1、建立模型:

2、数据文件(test.txt)

3、文件数据入库(默认的sqlite3)
入库之前执行 数据库同步命令。具体的参照:Django 学习笔记之二 基本命令 中同步数据库

4、查询方法
其中要用到values(*fields), filter(**kwargs), exclude(**kwargs), order_by(*fields)
1、 查询Author 表中数据记录条数
Author.objects.count() 类似 SQL:select count(*) from Author
2、查询Author 表中数据所有数据
Author.objects.values() 类似 SQL:select * from Author
3、查询查询Author 表中 name,age,birth三列的数据
Author.objects.values('name','age','sex') 类似 SQL:select name,age,sex from Author
4、查询name='mike' 姓名,性别,年龄及出生日期等数据
Author.objects.values('name','age','sex','birth').filter(name='mike')
类似 SQL:select name,age,sex,birth from Author where name ='mike'
5、查询age =40的人的姓名,性别,及出生日期信息
Author.objects.values('name','sex','birth').filter(age=40)
类似 SQL:select name,sex,birth from Author where age =40
6、查询age >40、age <40和age !=40的人的姓名,性别,及出生日期信息 ,主要大于、小于、不等于分别用__gt、__lt、exclude
Author.objects.values('name','sex','birth').filter(age__gt=40) age >40 类似 SQL:select name,sex,birth from Author where age >40
Author.objects.values('name','sex','birth').filter(age__lt=40) age <40 类似 SQL:select name,sex,birth from Author where age <40
Author.objects.values('name','sex','birth').exclude(age = 40) age !=40 类似 SQL:select name,sex,birth from Author where age !=40

出错的原因是age和__gt之间不能有空格,__gt和后面的数据可以有空格
7、查询name !='mike' 并且age!=20的信息。
Author.objects.values('name','age').exclude(name='mike',age=20)
类似 SQL:select name,sex from Author where name !='mike' and age !=40
8、查询name = 'mike' 并且age = 20的信息
Author.objects.values('name','age').filter(name='mike',age=20)
类似 SQL:select name,sex from Author where name ='mike' and age =40
5、查询并排序
1、查询name 和age 并按照age升序
Author.objects.values('age','name').order_by('age')
select age,name form Author order by age
2、查询name 和age 并按照age降序
Author.objects.values('age','name').order_by('-age')
select age,name form Author order by age desc
3、查询name 和age,并按照name,age升序
Author.objects.values('age','name').order_by('name','age')
select age,name form Author order by name, age
4、查询name 和age,并按照name,age降序 降序,在字段前面加个-
Author.objects.values('age','name').order_by('-name','-age')
select age,name form Author order by name, age desc
5、查询name 和age,并按照name升序, age降序
Author.objects.values('age','name').order_by('name','-age')
select age,name form Author order by name asc, age desc
6、查询age>30的name 和age信息,并按照age升序
Author.objects.values('age','name').filter(age__gt=30).order_by('age')
select age,name from Author where age>40 order by age
6、first()
返回由查询集匹配的第一个对象,如果没有匹配对象,则返回None。 如果QuerySet没有定义顺序,则查询集自动按主键排序。
Author.objects.first()
Author.objects.values().first()
7、last()
像first()一样工作,但返回查询集中的最后一个对象。
Author.objects.last()
Author.objects.values().last()
8、Max、Min、Avg、Sum、Count
1、from django.db.models import Max
Author.objects.all().aggregate(Max('age')) 结果:{'age__max': 70}
2、from django.db.models import Min
Author.objects.all().aggregate(Min('age')) 结果:{'age__min': 10}
3、from django.db.models import Avg
Author.objects.all().aggregate(Avg('age')) 结果:{'age__avg': 31.384615384615383}
4、from django.db.models import Sum
Author.objects.all().aggregate(Sum('age')) 结果:{'age__sum': 408}
Author.objects.all().aggregate(total_age=Sum('age')) 结果:{'total_age': 408}
5、from django.db.models import Count
Author.objects.all().aggregate(Count('age')) 结果:{'age__count': 13}
#年龄大于30的记录数
Author.objects.all().filter(age__gt=30).aggregate(Count('age')) 结果:{'age__count': 4}
Django 学习笔记之四 QuerySet常用方法的更多相关文章
- Django学习笔记之Queryset详解
Django ORM用到三个类:Manager.QuerySet.Model.Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己 ...
- Django学习笔记之Queryset的高效使用
对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Dja ...
- Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API
用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- Django 学习笔记(七)数据库基本操作(增查改删)
一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
- Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程
这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...
- Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录
一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...
- Django 学习笔记之三 数据库输入数据
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
随机推荐
- Web API 入门指南 - 闲话安全(转)
Web API 安全概览 安全隐患 1. 注入(Injection) 2. 无效认证和Session管理方式(Broken Authentication and Session Management) ...
- mvc路由规则相关
1,可以创建多条路由规则,每条路由规则的name属性不能相同 2,路由规则是有顺序的,如果被前面的规则匹配了,那么后面的规则就没有机会了 下面是一条路由规则的代码 routes.MapRoute( n ...
- Js中把JSON字符串转换为JSON对象(eval()、new Function())
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- 建立临时的表 数据 空值 与 NULL 转换
if exists ( select * from INFORMATION_SCHEMA.tables where table_name = 'Config_Order_ChargesToPreVie ...
- 读书笔记-常用设计模式之MVC
1.MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,它最早出现在SmallTalk语言中.MVC模式是一种复合设计模式,由“观察者”(Observ ...
- VxWorks 6.9 内核编程指导之读书笔记 -- ISRs和Watchdog Timer
中断服务程序 ISR 硬件中断处理是实时系统的关键,因为它是外部时间通知系统的方式. ISR亦称为中断处理函数,是对中断的正确响应.可以使用任何ISR连接到任何没有被VxWorks使用的中断上.当关联 ...
- 嵌入值和序列化LOB
Embedded Value 把一个对象映射成另一个对象表中的若干字段. OO系统中会有很多小对象(DataRange,Money).而作为表在DB中毫无意义. 默认想法是把一个对象保存为一个表. 但 ...
- 20140215-搭建phonegap开发环境
1.安装jdk,配置环境变量 a)设置 JAVA_HOME =E:\SetUpFiles\win8.1\Java\jdk1.6.0_45 b)设置PATH=E:\SetUpFiles\win8.1\J ...
- (转)分布式缓存GemFire架构介绍
1什么是GemFire GemFire是一个位于应用集群和后端数据源之间的高性能.分布式的操作数据(operational data)管理基础架构.它提供了低延迟.高吞吐量的数据共享和事件分发.Gem ...
- Data Mining Resources
韩家炜 http://www.cs.uiuc.edu/~hanj/ 著名数据挖掘书籍,<数据挖掘概念和技术>作者,在DM界久负盛名.他的个人主页里面有很多他的papers,都非常经典:还有 ...