Sanic二十六:Sanic + tortoise-orm 之Model、QuerySet提供的查询方法

数据

由于在创建模型的时候,是继承的tortoise.Model,看看tortoise.Model都提供了什么方法,如果发现又不满足使用场景的情况,再来修改或者补充

看看有用的方法

1、filter:使用给定的过滤条件创建 QuerySet,即查询满足指定条件的数据

2、exclude:使用给定的排除过滤条件创建 QuerySet,即查询不满足给定条件的数据

3、all:从根据查询条件获得的结果中获取全部数据

4、first:从根据查询条件获得的结果中获取第一条数据

使用示例

其实从源码可以看出,这些个查询方法都是调的 cls._meta.manager.get_queryset() 方法,那么我们可以看看这个方法到底来自于哪里,都做了什么

从源码看,都是使用的 QuerySet 这个类,那么这个类有哪些方法呢

关键方法一:_clone,执行所有操作都会先使用_clone获取一个新的QuerySet对象

关键方法二:_filter_or_exclude,用于执行 filter 和 exclude 两个查询逻辑

具体提供的查询方法

1、 filter 和 exclude 上面已经演示过了,这里就不演示了

2、all()其实就是调用_clone方法获取克隆对象,first()其实就是查询集里面执行了个limit1

3、count,统计数量

 

4、exists:判断查询集是否存在

5、explain:查看执行计划

6、get:作用和filter().first()一样

7、get_or_none:有数据则直接获取,没数据则返回None

8、group_by和order_by

9、limit,获取指定的条数

10、offset:偏移

11、values:返回字典,不返回对象,自动序列化

12、values_list,返回数据的值,不返回字段名,可指定要返回的字段

更多方法见源码或官方文档

讨论群:249728408
原文地址:https://www.cnblogs.com/zhongyehai/p/15202038.html