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中

———- 结束 ——————

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

Original: https://blog.csdn.net/wang_nai_jun/article/details/124914015
Author: wang_nai_jun
Title: python / flask sqlAlchemy 分页查询(paginate)实现举例,分页方式使用不当报404错误

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/747204/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球