Python编程:数据库分页取数据

简介: Python编程:数据库分页取数据

简单版分页

def paginate(page, paginate_by=20):
    """
    表分页
    """
    if page > 0:
        page -= 1
    return {
        "limit": paginate_by,
        "offset": page * paginate_by
    }
if __name__ == "__main__":
   for i in range(1, 10):
       ret = paginate(i)
       print(ret["limit"], ret["offset"])
   """
   (20, 0)
   (20, 20)
   (20, 40)
   (20, 60)
   (20, 80)
   (20, 100)
   (20, 120)
   (20, 140)
   (20, 160)
   """

分页函数参考peewee模块


加强版分页函数

由于前端传回来的参数,都是字符串,后端还要转为int,每次都转很麻烦,所以直接封装到分页函数里


# -*- coding: utf-8 -*-
def paginate(page, size=20):
    """
    数据库 分页 和 翻页 功能函数
    @param page: int or str 页面页数
    @param size: int or str 分页大小
    @return: dict
    {
        'limit': 20,   所取数据行数
        'offset': 0,   跳过的行数
        'before': 0,   前一页页码
        'current': 1,  当前页页码
        'next': 2      后一页页码
    }
    """
    if not isinstance(page, int):
        try:
            page = int(page)
        except TypeError:
            page = 1
    if not isinstance(size, int):
        try:
            size = int(size)
        except TypeError:
            size = 20
    if page > 0:
        page -= 1
    data = {
        "limit": size,
        "offset": page * size,
        "before": page,
        "current": page + 1,
        "next": page + 2
    }
    return data
if __name__ == '__main__':
    result = paginate(None, None)
    print(result)
    result = paginate(0, 20)
    print(result)
    result = paginate(1, 50)
    print(result)
    result = paginate(3, 20)
    print(result)
    result = paginate("3", "30")
    print(result)
    """
    {'limit': 20, 'offset': 0, 'before': 0, 'current': 1, 'next': 2}
    {'limit': 20, 'offset': 0, 'before': 0, 'current': 1, 'next': 2}
    {'limit': 50, 'offset': 0, 'before': 0, 'current': 1, 'next': 2}
    {'limit': 20, 'offset': 40, 'before': 2, 'current': 3, 'next': 4}
    {'limit': 30, 'offset': 60, 'before': 2, 'current': 3, 'next': 4}
    """



相关文章
|
5月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
621 7
|
5月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
2938 1
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
597 0
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
368 3
|
5月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
598 3
|
5月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
407 3
|
5月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
480 0
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
456 158
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多