关于SQLAlchemy all()查询性能问题

问题描述:当我们不得以使用all()查询时,首先你要考虑的是性能问题,查询所有数据的做法会加重数据库负担同时服务器内存消耗量增加,如果数据库中的查询的表数据量巨大,那么这种方法会搞到系统崩溃,特别是我们的restful风格时避免不了有list_resource的接口,那么我们该怎么办呢?
在这里插入图片描述
思路:
首先是尽量添加条件过滤,或者使用limit() offset() 限制个数和区间的数据,当我们在做list_resource的接口的时候,我们尽量采用分页向前端展示
在这里插入图片描述
当我们在使用paginate方法的时候你是否还是担心它是否是有性能缺失?是否是先把数据全部查询出来再进行分页呢?告诉你并不是,下面为你列出源码,源码中它也是使用limit和offset的,所以你不用当心性能的问题
在这里插入图片描述
除此之外sqlalchemy 还有缓存的效果,在同一请求中多次查询相同的数据时,他只会查询一次,后面的将会是使用本地缓存的数据,
当然你觉得可能性能还不够好,那么你可以使用redis构建一层缓存(这里就不详细讨论了)

除此之外还有别的展示分页第三方库,不过只能将查询后的结果进行分页展示,下面列举出来

  1. paginate_sqlalchemy
    官方文档地址https://pypi.org/project/paginate_sqlalchemy/
  2. paginate (没有找到官方文档地址,不过使用pip安装好,import paginate 即可使用)
    只需要使用pip 进行安装即可,具体使用参照官方文档和源代码里面的举例用法即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值