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博客
本文谢绝任何形式的转载,感谢关注。