如果使用了flask框架,直接使用flask_sqlalchemy的paginate即可实现数据库分页功能。这里我分享一下不使用flask时,sqlalchemy如何分页。
假设当前页数current_page、总页数total_pages、一页多少行page_size
由于数据是从第0条开始的,所以第一页的数据是在0~page_size-1的位置,以此类推,则取一页数据为:
query = session.query(User).limit(page_size).offset((current_page-1)*page_size)
BTW,由于sqlalchemy使用了懒加载,所以这条语句实际上返回的是一个Query类型的SQL查询语句,并不是一页的数据。
懒加载指:直到真正使用查询结果时,才会触发上面的查询语句开始进行数据库查询。
若我们想直接获取到实际的数据,可以执行:
users = query.all()
这样users即为我们实际需要的数据了。
和all()函数类似的还有 one() scalar() first() one_or_none() get(),它们都可以执行Query类型的查询语句返回真正结果哦 :D