温馨提示: 读完本文大约需要 3 分钟;这是一篇技术类文章;需要对fastapi有一定的了解;代码部分横屏观看更佳。

前言

最近在使用FastApi为后端框架进行一个项目的开发,在FastApi使用过程中,遇到了分页查询的问题,特此记录一下,以便以后查阅。

继续上一篇分页查询的文章,在上篇文章中,有读者跟我说分页查询有更好的方案,于是便查资料,将我查到的结果跟大家分享下。

本篇文章主要讲解 fastapi-pagination 这个 fastapi 的扩展库

fastapi-pagination初体验

按照官方文档先来个基础的使用方法:

from fastapi_pagination import Page, add_pagination, paginate@app.get("/cases", response_model=Page[case_schema.CaseSchemaDetail])
async def read_cases(db: SessionLocal = Depends(get_db)):"""查询用例列表:param db: db session:return:"""return paginate(case_crud.get_cases(db))add_pagination(app)
1.导入类和方法

在使用的时候,首先要导入类 Page,方法:paginateadd_pagination

2.在response_model处添加 Page
@app.get("/cases", response_model=Page[case_schema.CaseSchemaDetail])
3.在返回数据的地方加上 paginate
return paginate(case_crud.get_cases(db))
4. 最后不要忘记了加上 add_pagination
add_pagination(app)

这里注意:add_pagination 的引用需要在 Page 之后,我在试用的时候,放在了初始化app的后面:

app = FastAPI()
add_pagination(app)

结果就程序报错了,放在初始化 app 这个文件的最后就OK了

入参示例

curl -X 'GET' \'http://127.0.0.1:9000/cases?page=1&size=2' \-H 'accept: application/json'

在url地址后面加上两个查询参数即可:

  • page
  • size

返回示例

{"items": [{"id": 1,"name": "叫主产什其","case_level": "10","marks": null,"remark": null,"module_id": 2,"create_time": "2022-08-05T16:05:58","update_time": "2022-08-05T16:05:58"},{"id": 2,"name": "称农活上","case_level": "7","marks": null,"remark": null,"module_id": 2,"create_time": "2022-08-05T16:19:19","update_time": "2022-08-05T16:19:19"}],"total": 13,"page": 1,"size": 2
}

在返回参数中主要添加了几个参数:

  • total: 统计总共查询出来结果的个数
  • page:页码
  • size:每页展示数据条数
  • items:查询数据结果对象

后记

这个类库做分页查询还是非常方便的。

存在一点疑问:我在写 crud 方法进行查询的时候是全部都查询出来,会不会有性能问题。

def get_cases(db: Session):"""查询用例列表:param db::return:"""return db.query(Case).all()

针对这个问题,我将继续查询资料,在下期文章中跟大家分享。


每日踩一坑,生活更轻松。

本期分享就到这里啦。祝君在测开之路上越走越顺,越走越远。

gzh: 测开工程师的烦恼

fastapi-分页查询-FastAPIPagination相关推荐

  1. [JAVA EE] JPA 查询用法:自定义查询,分页查询

    项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...

  2. jpa分页查询_spring data jpa 居然提供了这么多查询方式!

    spring data jpa提供了多种查询方式,如下: 方法名称查询 继承Repository接口 测试代码 方法名称中支持的关键字(官方文档提供) 使用JPA命名查询 在User实体中定义jpql ...

  3. Oracle中分页查询语句

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...

  4. Castle ActiveRecord学习(四)延迟加载、分页查询、where条件

    一.延迟加载 //用户发布的主题,一对多:Table:外键表:ColumnKey:外键:Lazy:延迟加载:Cascade:级联操作(级联删除)[HasMany(typeof(ThemeInfo), ...

  5. 【sql】实现分页查询

    分页查询,以五条五条查询为例: 代码实现: select * from goods_list LIMIT 0 , 5; 从第0条开始,查询五条

  6. java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...

    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点. 下面简单说一下我知道的一些 ...

  7. Oracle的分页查询

    为什么80%的码农都做不了架构师?>>>    因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理.使用row ...

  8. mysql临时表如何分页查询慢_数据量很大,分页查询很慢,怎么优化?

    作者:悠悠i,来源: http://uee.me/aVSnD 当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分 ...

  9. SQL Server中的分页查询

    分页查询很简单,具体代码如下: --分页查询--查询1-3行数据 select top 3 * from emp order by sal desc;--查询4-6行数据 select top 3 * ...

最新文章

  1. 90后清华女校友范楚楚获ACM 2020唯一博士论文奖!出任MIT助理教授后再摘桂冠
  2. 《CCNP ROUTE (642-902 )认证考试指南》一1.2 将考试主题与典型网络工程师的工作关联起来...
  3. python的常见矩阵除法_Python numpy矩阵处理运算工具用法汇总
  4. cf1552F. Telepanting
  5. Java注释是一个大错误
  6. mysql update nowait_mysql innodb之select for update nowait
  7. 又拍云刘平阳,理性竞争下的技术品牌提升之道
  8. Selenium UI 举例 getCssValue
  9. spark1.6 maven java_Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】...
  10. linux远程访问服务器
  11. 自动化测试元素定位“最佳实践”
  12. Sqlite3 ---------------用法
  13. [PMP]专题资源管理错题
  14. 现代软件工程_项目回顾模板
  15. 组网学习之什么是链路冗余(二)
  16. 支持向量机原理小结(3)——核方法和非线性支持向量机
  17. C++操作MySQL大量数据插入效率低下的解决方法
  18. JDR与JRE的区别
  19. 域名注册网站服务比较
  20. java生成chk文件_java web实现在线编辑word,并将word导出(一)

热门文章

  1. Hadoop学习笔记-NN与2NN
  2. Java继承中的子类父类构造方法的调用
  3. 『对话』埃森哲互动Lamy:数字营销的变与不变
  4. 环绕上海走一回——《环绕上海》读后感3533字
  5. “百度杯”CTF比赛 九月场 Upload解题思路
  6. ashx 修改部分 html,html+ashx 表单提交示例
  7. 分分钟搭建Drools规则引擎Workbench平台
  8. upstart重新唤起php进程
  9. 【刷题篇】领扣3168.求两数加减乘除后的值(python)
  10. 春校赛——求索溪的树枝