• 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}

         

        

        

      

  • 相关阅读:
    三代测序及基于三代数据的基因组组装流程评估
    组装技术的新进展 New advances in sequence assembly.
    细菌完成图组装软件简单介绍 细菌
    个人基因组测序将进入千美元费用时代
    HALC:用于长读取错误纠正的高吞吐量算法
    基因组装配新前沿:长片段完成完整的基因组
    第三代PacBio测序技术的测序原理和读长
    三代组装小基因组研究综述
    矩阵连乘 动态规划
    poj 1723 中位数
  • 原文地址:https://www.cnblogs.com/shaosks/p/6150067.html
Copyright © 2020-2023  润新知