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/
转载文章受原作者版权保护。转载请注明原作者出处!