code: def page(self, page_number=0) -> list:
          
          # workaround flask-sqlalchemy/issues/516
          offset = page_number * self.limit
          sql = 'SELECT * FROM %s {} LIMIT :li OFFSET :o' \
              % (self.model.__tablename__)
          filter_query = self.__filter_query()
          if filter_query is None:
              sql = text(sql.format(''))
              result = self.model.db.engine.execute(
                  sql, li=self.limit, o=offset)
          else:
              filter_query['binds']['li'] = self.limit
              filter_query['binds']['o'] = offset
              sql = text(sql.format(filter_query['query']))
              result = self.model.db.engine.execute(
                  sql, **filter_query['binds'])
          result_keys = result.keys()
          result_models = []
          for row in result:
              model = self.model()
              key_count = 0
              for key in result_keys:
                  setattr(model, key, row[key_count])
                  key_count = key_count + 1
              result_models.append(model)
          return result_models
docs: Return [models] by page_number based on limit