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常用方法的更多相关文章

  1. Django学习笔记之Queryset详解

    Django ORM用到三个类:Manager.QuerySet.Model.Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己 ...

  2. Django学习笔记之Queryset的高效使用

    对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Dja ...

  3. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  4. Django学习笔记(三)—— 型号 model

    疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...

  5. Django 学习笔记(七)数据库基本操作(增查改删)

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

  6. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  7. Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程

    这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...

  8. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  9. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

随机推荐

  1. LINQ to SQL 语句(2)之 Select/Distinct

    LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和  Distinct 介绍 Se ...

  2. Java之组合数组1

    我们先说"数组",数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素. 一.一维数组的定义 type arrayName[]; 其中类型(type ...

  3. windows server 2008 防火墙配置

    防火墙的配置主要是过滤用户是否能够访问服务器,哪些用户能够访问,哪些用户不能访问.类似于交换机上的acl(访问控制列表) 在windows服务器上有入站规则以及出站规则,那我们首先得了解一下什么是入站 ...

  4. text-overflow:ellipsis; 使用

    ul li{ height:25px; line-height:25px; width:200px; overflow:hidden; white-space:nowrap;-moz-text-ove ...

  5. 计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别

    昨天写一个同步数据库的模块  从一个数据库同步到另外一个数据库,因为数据较多,不可能一次性全部搬迁过去,所以就按照每天搬迁! 写了一个 模块,点击加1,只要点击一次,自动从A数据库取出1天的数据, 并 ...

  6. OC4_遵守多个协议

    // // Calulator.h // OC4_遵守多个协议 // // Created by zhangxueming on 15/6/24. // Copyright (c) 2015年 zha ...

  7. php29号小结(隔行换色······)

    1.给表单加样式,可以用css.php与js.js这三种,其中最好用php与js,现在很推广用这种. css3样式隔行换色(table中) tr:nth-child(even){ background ...

  8. CXF和Axis的比较【转】

    在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).对于服务开发人员来说,AXIS和CXF一定都不会陌生.这两个产品都是Apache孵化器下面的Web ...

  9. C++ 11 之学习总结

    感慨时间过的好快,C++ 11出来都5年了,现在才开始学习,但为时也不晚: 主要是网上及身边的朋友大肆宣扬C++ 11的某些优化,弄得别人心里痒痒的,所以就花了3天学习了点基本知识,相对于整个C++ ...

  10. DataGrid实现逻辑分页

    在ASP.NET内建提供的所有数据排列控件中,只有DataGrid数据控件是提供数据分页功能的.DataReapter数据控件只能提供一些简单 的.基础的数据重复排列功能,对于一些比较复杂的应用是无能 ...