Django查询相关函数

    科技2022-07-21  99

    filter

    条件格式:     模型类属性名__条件名=值

    判等条件名:exact。 例:查询编号为1的图书。BookInfo. objects. get(id=1)BookInfo. objects.get(id__exact=1)模糊查询 例:查询书名包含’传’的图书:contains -BookInfo.objects.filter(btitle__contains=‘传’) 例:查询书名以’部’结尾的图书endswith 开头:startswith BookInfo.objects.filter(btitle__endswith=‘部’)空查询 isnull 例:查询书名不为空的图书。isnull。 select * from booktest_bookinfo where btitle__is not null; BookInfo.objects.filter(btitle__isnull=False)范围查询 in 例:查询id为1或3或5的图书。 select * from booktest_bookinfo where id in (1,3,5); BookInfo. objects.filter(id__in = [1,3,5])比较查询 gt(greate than),lt(less than), gte(equal) 大于等于, lte 小于等于 例:查询编号大于3的图书。 select * from booktest_bookinfo where id>3; BookInfo. objects. filter(id__gt=3)日期查询 例:查询1980年发表的图书。 BookInfo.objects. filter(bpub_date__year=1980 ) 例:查询1980年1月1日后发表的图书。 from datetime import date BookInfo. objects. filter(bpub_date__gt=date(1980,1,1))

    exclude方法实例

    例:查询id不为3的图书信息。 BookInfo. objects. exclude(id=3) order_ by方法示例:

    F对象

    作用:用于类属性之间的比较 使用之前需要先导入:from django.db.models import F

    例:查询图书阅读量大于评论量图书信息 BookInfo.objects.filter(bread__gt=F(‘bcomment’)) 例:查询图书阅读量大于2倍评论量图书信息 BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2)

    Q对象

    作用:用于查询时条件之间的逻辑关系。not and or,可以对Q对象进行& | ~操作。 使用之前需要导入:from django.db.models import Q

    例:查询id大于3且阅读量大于30的图书的信息 BookInfo.objects.filter(id__gt=3,bread__gt=30) BookInfo.objects.filter(Q(id__gt=3)&Q(bread__gt=30)) 例:查询id大于3或者阅读量大于30的图书的信息 BookInfo.objects.filter(Q(id__gt=3)|Q(bread__gt=30)) 例:查询id不等于3的图书的信息 BookInfo.objects.filter(~Q(id=3))

    聚合函数

    作用:对查询结果进行聚合操作–sum、count、avg、max、min aggregate:调用这个函数来使用聚合。返回值是一个字典 使用前需要先导入聚合类:from django.db.models import Sum, Count, Max, Min, Avg

    例:查询所有图书的数目 select count(*) from booktest_bookinfo; BookInfo.objects.all().aggregate(Count(‘id’)) BookInfo.objects.aggregate(Count(‘id’)) 返回值:{‘id__count’:5}

    例:查询所有图书阅读量的综合 BookInfo.objects.all().aggregate(Sum(‘bread’)) BookInfo.objects.all().aggregate(Sum(‘bread’)) 返回值:{‘bread__sum’:126}

    count函数

    返回值是一个数字 作用:统计满足条件数据的数目

    例:统计所有图书的数目 BookInfo.objects.all().count()BookInfo.objects.count() 例:统计id大于3的所有图书的类 BookInfo.objects.filter(id__gt=3).count()

    总结

    get:返回一条且只能有一条数据,返回值是一个对象,参数可以写查询条件。

    all:返回模型类对应表的所有数据,返回值是QuerySet。

    filter:返回满足条件的数据,返回值是QuerySet, 参数可以写查询条件。

    exclude:返回不满足条件的数据,返回值是QuerySet,参数可以写查询条件。

    order_ by:对查询结果进行排序,返回值是QuerySet,参数中写排序的字段。

    F对象:用于类属性之间的比较。

    Q对象:用于条件之间的逻辑关系。

    aggregate:进行聚合操作,返回值是一个字典,进行聚合的时候需要先导入聚合类。

    count:返回结果集中数据的数目,返回值是一个数字。

    注意:对一个QuerySet实例对象,可以继续调用上面的所有函数。通过模型类实现关联查询时,要查哪个表中的数据,就需要通过哪个类来查。写关联查询条件的时候,如果类中没有关系属性,条件需要写明对应类的名字;如果类0中有关系属性,就直接写关系属性

    Processed: 0.010, SQL: 8