python / flask sqlAlchemy 分页查询(paginate)实现举例,分页方式使用不当报404错误

from sqlalchemy.orm import aliased
from sqlalchemy import func
    
    #方式一,db.session.query查询
    #Order、Emp、Cust需要自定义,常规自db.Model
    
    Emp1 = aliased(Emp) #关联查询,非必须
    page_size = 20
    page_index = 1 #start from 1, not 0
    #查询总行数
    record_count =db.session.query(func.count(Order.id)).scalar()
    #查询指定分页的数据
    data_items = dbconn.session.query(Order, Emp1).outerjoin(Emp1, Emp1.id == Order.emp_id).limit(page_size).offset((page_index - 1) * page_size).all()
    #分页信息设置,PageInfo需要自定义
    page_info=PageInfo()
    page_info.page = page_index                         #当前页码
    page_info.pages = int(record_count / page_size + 1) #页数
    page_info.total = record_count                      #总行数
    page_info.has_prev = page_index > 1                 #不是第一页时,允许前翻
    page_info.has_next = page_index >= 1 and page_index < page_info.pages   #不是最后一页时,允许后翻
    page_info.size = page_size                          #每页行数
    
    page_num_list=[]#页码列表
    for i in range(page_info.pages):
        page_num_list.append(i+1)
    page_info.iter_pages = page_num_list
    
    #查询结果数据在 data_items中
    #
    #
    
    
    #----------------- db.session.query查询模式结束 ------------ 
    
    #--------- db.Model对象.query查询模式

    
    page_size = 20
    page_index = 1 #start from 1, not 0
    data_items_page = Cust.query.paginate(page_index, page_size, error_out=True)

    page_info=PageInfo()
    page_info.page = data_items_page.page
    page_info.pages = data_items_page.pages
    page_info.total = data_items_page.total
    page_info.has_prev = data_items_page.has_prev
    page_info.has_next = data_items_page.has_next
    page_info.size = page_size
    
    page_num_list=[]#页码列表
    p_iter=data_items_page.iter_pages()
    for i in p_iter:
        page_num_list.append(i)
    page_info.iter_pages = page_num_list
    
    #查询结果数据在 data_items_page.items中
    #
    #---------- 结束 ------------------

参考:(76条消息) sqlalchemy和flask-sqlalchemy的几种分页方法_aobian2884的博客-CSDN博客

参考:sqlAlchemy的查询分页和获取总条数_qq5a166ea6303da的技术博客_51CTO博客

本文谢绝任何形式的转载,感谢关注。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值