我想从我的应用程序中删除flask-SQLAlchemy
的依赖关系。虽然,我非常依赖库附带的pagination
功能。我想将分页能力移到我的模型上。
查看flask-SQLAlchemy
内部,我看到以下内容:
class Paginate(object):
def __init__(self, query, page, per_page, total, items):
@property
def pages(self):
"""The total number of pages"""
if self.per_page == 0:
pages = 0
else:
pages = int(ceil(self.total / float(self.per_page)))
return pages
...
class BaseQuery(orm.Query):
...
def paginate(self, page=None, per_page=None, error_out=True):
...
return Pagination(self, page, per_page, total, items)
此功能的调用如下:
page = Model.query.filter(*where_to_SQL(Model, where)).paginate(page=1, per_page=chunksize)
如果我已经定义了下面的SQLAlchemy
声明性模型,那么如何在对代码库进行最小更改的情况下添加分页?
database.core.py
中的,导入Model
类并在模型定义中使用...
...
Model = declarative_base(name='Model')
Model.query = db_session.query_property()
...