• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
wang_nai_jun
帮助1

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中
    #
    #---------- 结束 ------------------

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfake
系列文章
更多 icon
同类精品
更多 icon
继续加载