实施没有flask-sqlalchemy的分页

时间:2016-12-01 20:48:49

标签: python pagination sqlalchemy flask-sqlalchemy

我想从我的应用程序中删除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()
...

0 个答案:

没有答案