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

这篇具有很好参考价值的文章主要介绍了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 and
        number 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 will
        not 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 the
            offset 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 a
            user-provided value. Use ``None`` for no limit. Defaults to 100.
        :param error_out: Abort with a ``404 Not Found`` error if no items are returned
            and ``page`` is not 1, or if ``page`` or ``per_page`` is less than 1, or if
            either are not ints.
        :param count: Calculate the total number of values by issuing an extra count
            query. For very complex queries this may be inaccurate or slow, so it can be
            disabled and set manually if necessary.

        .. versionchanged:: 3.0
            The ``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博客文章来源地址https://www.toymoban.com/news/detail-731808.html

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()

到了这里,关于Flask-flask中的后台分页查询实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【python】flask查询更新指定的某一条记录

    PackageRecord.query.filter_by(id=package_id).update(json_data)  这段代码的问题在于它不能正确地更新指定的记录。这是因为  update()  方法是 SQLAlchemy 提供的一种批量更新的方法,他通过接收一个字典对象来更新记录。但是在你的代码中, json_data  应该是一个 JSON 字符串,而不是一个字

    2024年02月15日
    浏览(11)
  • 深入解析域名短链接生成原理及其在Python/Flask中的实现策略:一篇全面的指南与代码示例

    深入解析域名短链接生成原理及其在Python/Flask中的实现策略:一篇全面的指南与代码示例

    为了构建一个高效且用户友好的域名短链服务,我们可以将项目精简为以下核心功能板块: 1. 用户管理 注册与登录 :允许用户创建账户并登录系统。 这部分内容可以参考另一片文章实现: 快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码 资料管

    2024年02月22日
    浏览(11)
  • 【附源码】基于flask框架基于微信小程序的河南省美食分享平台 后台(python+mysql+论文)

    【附源码】基于flask框架基于微信小程序的河南省美食分享平台 后台(python+mysql+论文)

    本系统(程序+源码)带文档lw万字以上   文末可获取本课题的源码和程序 选题背景: 随着移动互联网的飞速发展,微信小程序以其无需下载安装、使用方便的特点,逐渐成为人们日常生活中获取信息和进行交流的重要工具。特别是在美食分享领域,人们对各地特色美食的了

    2024年04月27日
    浏览(12)
  • flask分页宏增加更多参数

    flask分页宏增加更多参数

    背景:我正在开发一个博客,核心的两个model是文章和文章类别。 现在想要实现的功能是:点击一个文章类别,以分页的形式显示这个文章类别下的所有文章,类似这种效果。 参考的书中分页宏只接受页数这一个参数,经过尝试,成功给分页宏添加了文章类别参数,实现了上

    2024年01月21日
    浏览(9)
  • python在flask中的请求数据“无限流”

    python在flask中的请求数据“无限流”

    在flask请求中,有个需求是让调用方一直调接口,并立马返回,而接口方缓存请求,依次执行。 注意: 需要注意的是, request_queue.get() 之后队列里的值就直接推出了,不用显式推出。 以上就可以做到讲请求立刻返回,接口缓存请求内容自我\\\"消化\\\"。Enjoy~ ∼ O n e   p e r s o n  

    2024年02月21日
    浏览(12)
  • 探索Flask中的RESTful API设计与实现

    基础介绍: ​ RESTful API(Representational State Transfer)是一种基于HTTP协议设计的应用程序编程接口(API)风格,用于在客户端和服务器之间进行通信。它提供了一组规范和约束,用于创建可伸缩、可靠和可维护的网络服务。 路径(URI)设计: 使用有意义的路径来表示资源,例

    2024年01月21日
    浏览(9)
  • 如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程)

    如何把本地flask项目(框架)上传到服务器(Linux),并后台持续运行(包括requirements文件生成,python项目与域名绑定,保姆级教程)

     2023年中旬,参加了一个比赛,需要搭建一个网站。在不断探索琢磨之后,搭建了一个基于flask的web。直接上干货: 一、首先,在本地准备好自己的flask项目。包括最基本的三个文件: 然后准备生成requirements.txt文件,这个文本文件会告诉服务器你的项目运行所需要的环境,即

    2024年02月04日
    浏览(12)
  • Vue+Flask电商后台管理系统

    Vue+Flask电商后台管理系统

    在这个项目中,我们将结合Vue.js前端框架和python后端框架Flask,打造一个功能强大、易于使用的电商后台管理系统 项目演示视频: Vue+Flask项目 目录 前端环境(Vue.js): 后端环境(python-Flask): 页面登录效果 用户管理 角色列表 商品列表 分类列表 商品属性 订单列表 数据可

    2024年04月27日
    浏览(28)
  • 【python】我用python写了一个可以批量查询文章质量分的小项目(纯python、flask+html、打包成exe文件)

    【python】我用python写了一个可以批量查询文章质量分的小项目(纯python、flask+html、打包成exe文件)

    web 效果预览: 先去质量查询地址:https://www.csdn.net/qc 输入任意一篇文章地址进行查询,同时检查页面,在Network选项下即可看到调用的API的请求地址、请求方法、请求头、请求体等内容: 请求头里面很多参数是不需要的,我们用 ApiPost 这个软件来测试哪些是必要参数。 经过

    2024年02月13日
    浏览(6)
  • Flask框架-数据库查询对象转字典或列表:实现model_to_dict的功能

    使用场景: 对于一些简单的表,可以直接通过该方法将数据查询对象进行序列化操作,转成python中列表或字典结构,再展示给前端。 1、model_to_dict方法:对单个查询对象序列化 2、model_to_list方法:查询结果是list时,对多个查询对象序列化

    2024年02月12日
    浏览(6)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包