Flask-flask中的后台分页查询实现

在后台查询数据并在前台展示的场景中,当数据量较大时,页面加载会非常缓慢,此时建议使用后台分页查询的形式。在flask中,基于Flask-SQLAlchemy可以使用以下方式实现。

方法一:

Flask-SQLAlchemy 提供了一个 paginate()查询方法,参考:Flask 学习-73.Flask-SQLAlchemy 分页查询paginate_flasksqlalchemy分页查询_上海-悠悠的博客-CSDN博客

page4 = Server.query.paginate(page=4, per_page=2)
print(page4.items)
page3 = page4.prev()
print(page3.items)

查看源码:

    def paginate(self,select: sa.sql.Select[t.Any],*,page: int | None = None,per_page: int | None = None,max_per_page: int | None = None,error_out: bool = True,count: bool = True,) -> Pagination:"""Apply an offset and limit to a select statment based on the current page andnumber of items per page, returning a :class:`.Pagination` object.The statement should select a model class, like ``select(User)``. This applies``unique()`` and ``scalars()`` modifiers to the result, so compound selects willnot return the expected results.:param select: The ``select`` statement to paginate.:param page: The current page, used to calculate the offset. Defaults to the``page`` query arg during a request, or 1 otherwise.:param per_page: The maximum number of items on a page, used to calculate theoffset and limit. Defaults to the ``per_page`` query arg during a request,or 20 otherwise.:param max_per_page: The maximum allowed value for ``per_page``, to limit auser-provided value. Use ``None`` for no limit. Defaults to 100.:param error_out: Abort with a ``404 Not Found`` error if no items are returnedand ``page`` is not 1, or if ``page`` or ``per_page`` is less than 1, or ifeither are not ints.:param count: Calculate the total number of values by issuing an extra countquery. For very complex queries this may be inaccurate or slow, so it can bedisabled and set manually if necessary... versionchanged:: 3.0The ``count`` query is more efficient... versionadded:: 3.0"""

参数说明:
page: int,指定页码,从1开始
per_page: int,每一页显示几条数据
max_per_page:每页显示最大值当指定了max_per_page时,per_page会受到这个值的限制
error_out:是否抛出错误(默认为True)
count:是否计数,默认为True

返回值:
调用 paginate()查询方法会返回一个Pagination 对象的实例

Pagination类对象的属性主要有:
has_next:如果在目前页后至少还有一页的话,返回 True。
has_prev:如果在目前页之前至少还有一页的话,返回 True。
next_num:下一页的页面数。
prev_num:前一页的页面数。

另外还有如下的可调用方法:
iter_pages():一个迭代器,返回一个在分页导航中显示的页数列表。
prev():上一页的分页对象。
next():下一页的分页对象。

方法二:

利用限制查询方式手动实现分页,参考:Flask 查询,分页,排序及逻辑运算与聚合:_flask分页查询_Gray area的博客-CSDN博客

filters=[] # 组装通用查询过滤器filter,略
offset = (int(paging_start)-1)*int(paging_size)   
data_qry = User.query.filter(and_(*filters)).offset(offset).limit(paging_size).all()
或者
data_qry = User.query.offset(offset).limit(paging_size).all()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代循环神经网络-门控循环单元(GRU)

理论 门控隐状态 门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。 例如&…

双目立体视觉

#理想模型图 其中: b 为基线,即两个相机原点之间的距离 ; fl和fr 分别为左右相机的焦距,理想的双目相机flfrf ; cl和cr 分别为左右相机的光心,理想的双目相机clcr ; xl和xr 分别为空间中的一点…

2023/09/15 qt day1

代码实现图形化界面 #include "denglu.h" #include "ui_denglu.h" #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> denglu::denglu(QWidget *parent): QMainWindow(p…

【AI】机器学习——支持向量机(非线性及分析)

5. 支持向量机(线性SVM) 文章目录 5.4 非线性可分SVM5.4.1 非线性可分问题处理思路核技巧核函数特点 核函数作用于SVM 5.4.2 正定核函数由 K ( x , z ) K(x,z) K(x,z) 构造 H \mathcal{H} H 空间步骤 常用核函数 5.5 SVM参数求解算法5.6 SVM与线性模型关系 5.4 非线性可分SVM …

Spark SQL【基于泰坦尼克号生还数据的 Spark 数据分析处理】

前言 昨天实验课试着做了一个 Spark SQL 小案例&#xff0c;发现好多内容还是没有掌握&#xff0c;以及好多书上没有的内容需要学习。 一、数据准备 csv 文件内容部分数据展示&#xff1a; PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarke…

聊天机器人

收集窗帘相关的数据 可以用gpt生成&#xff0c;也可以用爬虫 图形化界面 gradio 向量数据库 faiss python代码 import gradio as gr import random import timefrom typing import Listfrom langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstor…

揭秘:WhatsApp的注册策略

WhatsApp账号的注册方式可以分为两种&#xff1a;实体卡注册和虚拟卡注册。实体卡注册是指使用个人手机卡完成注册&#xff0c;而虚拟卡注册则通过前面提到的对接平台来完成的。 账号注册问题一直是导致WhatsApp账号永久封禁的主要原因。由于WhatsApp广泛为群发获客等用途之一…

设计方法编写测试用例---思路分析

测一四年我在YX公司带测试团队&#xff0c;一个用例评审的会议上&#xff0c;一不小心超常发挥&#xff0c;结果卡在了一个用例设计方法上&#xff0c;印象非常深刻&#xff0c;当时的业务场景是支付方式的选择和优惠方案。 在后来的工作中&#xff0c;也曾几次遇到需要选择合…

Docker 安装

Docker 官网&#xff1a;Docker: Accelerated Container Application Development Docker Hub官网&#xff1a;https://hub.docker.com/ 前提说明 CentOS Docker 安装 前提条件 目前&#xff0c;CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上&…

软件定制开发具有以下特点|APP搭建|小程序

软件定制开发具有以下特点|APP定制|小程序 一、快速响应用户需求 软件定制开发的优势在于&#xff0c;它可以快速响应用户的需求&#xff0c;因为它是在现有软件的基础上进行功能定制、界面定制、服务定制等改造&#xff0c;而不是从零开始进行重新设计与开发&#xff0c;所以…

vscode快捷键大全中英文

vscode快捷键大全中英文 源文件下载链接

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职&#xff0c;重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题&#xff0c;基本都是运维背锅。背锅也就罢了&#xff0c;薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

根据商品ID获得淘宝商品详情, 获得淘宝商品详情高级版,获得淘宝商品评论, 获得淘宝商品快递费用 ,获得淘口令真实,批量获得淘宝商品上下架时间)

参数说明 通用参数说明 参数不要乱传&#xff0c;否则不管成功失败都会扣费url说明 https://api-gw.…….cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京东等&#xff0c; API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_…

Google Sign In error 12500

接入Google登录遇到12500报错&#xff0c;网上查到的原因是后台配置包的签名哈希值不正确&#xff0c;但是我们的应用并没有使用firebase管理&#xff0c;尝试多次之后终于找到了解决方法&#xff1a;在开发者后台应用管理界面&#xff0c;创建一个新的凭据【类型为Andorid】&a…

外国电影字幕翻译,怎么把英文字幕翻译成中文字幕?

我们知道&#xff0c;在国内外文化交流中&#xff0c;影视字幕翻译扮演着重要的角色&#xff0c;不仅让观众领略到异国风情&#xff0c;更能达到文化传播的功能。那么&#xff0c;针对外国电影字幕翻译&#xff0c;怎么把英文字幕翻译成中文字幕呢&#xff0c;有什么好的技巧呢…

特斯拉Dojo超算:AI训练平台的自动驾驶与通用人工智能之关键

特斯拉公开Dojo超算架构细节&#xff0c;AI训练算力平台成为其自动驾驶与通用人工智能布局的关键一环 在近日举行的Hot Chips 34会议上&#xff0c;特斯拉披露了其自主研发的AI超算Dojo的详细信息。Dojo是一个可定制的超级计算机&#xff0c;从芯片到系统全部由特斯拉自主设计…

RT Preempt linux学习笔记

RT Preempt linux学习笔记 一、实时操作系统&#xff08;Realtime Operating System&#xff09; 1. 什么是实时操作系统 A real-time system is a time-bound system which has well-defined, fixed time constraints. Processing must be done within the defined constra…

详解Nacos和Eureka的区别

文章目录 Eureka是什么Nacos是什么Nacos的实现原理 Nacos和Eureka的区别CAP理论连接方式服务异常剔除操作实例方式自我保护机制 Eureka是什么 Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用…

Linux安装kafka-manager

相关链接https://github.com/yahoo/kafka-manager/releases kafka-manager-2.0.0.2下载地址 百度云链接&#xff1a;https://pan.baidu.com/s/1XinGcwpXU9YBF46qkrKS_A 提取码&#xff1a;tzvg 一、安装部署 1.把kafka-manager-2.0.0.2.zip拷贝到目录 /opt/app/elk 2.解压…

ctf web基础php

1.preg_match函数绕过 1.数组绕过 <?php $pass$_GET[zx]; if(!preg_match("/admin/",$zx)false){die(hacker); } echo flag; ?> ?zx[]admin 2.换行符绕过 <?php $pass$_GET[zx]; if(!preg_match("/^.(admin).$/",$zx)false){die(hacker)…