django查询集-17

当查询结果是多个的时候,django-ORM会返回一个 查询集(QuerySet) ,表示从数据库中获取对象的 集合

查询集可以使用过滤器进行再次处理。

例如查询阅读量大于20且评论数大于30的书

>>> book = Book.objects.filter(b_read__gt=20)
>>> book.filter(b_comment__gt=30)
<QuerySet [<Book: 天龙八部>]>

因为查询集类似一个集合,所以可以对查询集进行取下标或者切片等操作(索引不支持负数)。

查询阅读数大于20的结果,再取下标为1 的数据。

>>> book = Book.objects.filter(b_read__gt=20)
>>> book[1]
<Book: 雪山飞狐>

查询集两大特性

1. 惰性执行

创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用

2. 缓存

使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。

原文地址:https://www.cnblogs.com/mxuanli/p/9966703.html

时间: 2024-08-29 22:15:33

django查询集-17的相关文章

django查询集API

本节将详细介绍查询集的API,它建立在下面的模型基础上,与上一节的模型相同: from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): # __unicode__ on Python 2 return self.name class Author(models.Model

Django查询集QuerySet及两大特性

1 概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. filter():返回满足条件的数据. exclude():返回满足条件之外的数据. order_by():对结果进行排序. 也就意味着查询集可以含有零个.一个或多个过滤器.过滤器基于所给的参数限制查询的结果. 从SQL的角度讲,查询集与select语句等价,过滤器像whe

Redis 怎么实现保存Django 查询集

我们在用Python Django开发秒杀系统的时候,要将Django 查询到商品详细信息保存到Redis缓存中去,但Redis不能直接保存对象,但有什么方法呢? 我们发现可用Python的pickle模块. pickle模块可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作. Pickle模块中最常用的函数为: 1.pickle.dumps(obj[, protocol]) 函数的功能:将obj对象序列化为string形式,而不是存入文件中. 参数讲解: obj

django查询集

查询集 all, filter, exclude, order_by调用这些函数会产生一个查询集,QuerySet类对象可以继续调用上面的所有函数. 查询集特性 1) 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询. 2) 缓存:当使用的是同一个查询集时,第一次使用的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果. 限制查询集 可以对一个查询集进行取下标或者切片操作来限制查询集的结果. 对一个查询集进行切片操作会产生一个新的查

Django 查询集的过滤内置条件

条件选取querySet的时候,filter表示=,exclude表示!=.querySet.distinct() 去重复__exact 精确等于 like 'aaa' __iexact 精确等于 忽略大小写 ilike 'aaa' __contains 包含 like '%aaa%' __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains.__gt 大于__gte 大于等于__lt 小于__lte 小于

查询集API -- Django从入门到精通系列教程

该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453131687 本节将详细介绍查询集的API,它建立在下面的模型基础上,与上一节的模型相同: from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline =

Django 聚合与查询集API

本文从Django官方文档总结而来,将聚合的主要用法和查询集的常见方法做一归纳. 聚合 1. 聚合的产生来源于django数据库查询,通常我们使用django查询来完成增删查改,但是有时候需要更复杂的方法才能完成对数据的提取.筛选.更改,所以需要一组对象聚合来完成这种操作.模型举例如下: from django.db import models class Author(models.Model): name = models.CharField(max_length=100) age = mo

Django框架(六):模型(二) 字段查询、查询集

1. 字段查询 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询. 函数名 功能 返回值 说明 get 返回表中满足条件的一条且只能有一条数据. 返回值是一个模型类对象. 参数中写查询条件. 1)如果查到多条数据,则抛异常MultipleObjectsReturned. 2)查询不到数据,则抛异常:DoesNotExist. all 返回模型类对应表格中的所有数据. 返回值是QuerySet类型 查询集 filter 返回满足条件的数据. 返回值是QuerySet类

查询集

查询集 查询集表示从数据库中获取的对象集合,在管理器上调用某些过滤器方法会返回查询集,查询集可以含有零个.一个或多个过滤器.过滤器基于所给的参数限制查询的结果,从Sql的角度,查询集和select语句等价,过滤器像where和limit子句. 返回查询集的过滤器如下: all():返回所有数据. filter():返回满足条件的数据. exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字. order_by():对结果进行排序. 返回单个值的过滤器如下: g