django查询集-17
程序员文章站
2022-10-04 18:51:06
当查询结果是多个的时候,django ORM会返回一个 查询集(QuerySet) ,表示从数据库中获取对象的 集合 。 查询集可以使用过滤器进行再次处理。 例如查询阅读量大于20且评论数大于30的书 因为查询集类似一个集合,所以可以对查询集进行取下标或者切片等操作(索引不支持负数)。 查询阅读数大 ......
当查询结果是多个的时候,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会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。