Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

数据

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

看看有用的方法

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

使用示例

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

具体提供的查询方法

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

3、count,统计数量

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet ) 

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

5、explain:查看执行计划

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

8、group_by和order_by

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

9、limit,获取指定的条数

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

10、offset:偏移

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

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

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

 

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

 

Sanic二十六:Sanic + tortoise-orm 之查询(QuerySet )

上一篇:LeetCode:3. 无重复字符的最长子串


下一篇:计算两个值相乘