def __init__(self, cursor, query: str, rows_per_page=10, current_page=1): """ :param cursor: connection.cursor() :param query: the query without the limit command :param rows_per_page: :param current_page: 1-index (first page is 1) :return: """ self.backend = DbNorm.get_backend_engine() self.cursor = cursor self.query = query self.rows_per_page = Str.int_val(rows_per_page, 10) self.current_page = Str.int_val(current_page, 1) self.count() if self.row_count > 0: self.page_count = math.ceil(self.row_count / rows_per_page)
def convert_to_int(cls, str_list): """ Convert a list of string into a list of int :param str_list: ["1", "2.99", "0.11"] => [1, 3, 0] :return: [] """ if not str_list: return [] int_list = [] for s in str_list: val = Str.int_val(s, None) if val is not None: int_list.append(val) return int_list
def get_page_query(self, page_number): """ Get the mysql query for the specified page. :param page_number: 1-index (first page is 1) :return: """ # [LIMIT {[offset,] row_count | row_count OFFSET offset}] page_number = Str.int_val(page_number, 1) if page_number <= 0: page_number = 1 elif self.row_count > 0 and page_number > self.page_count: page_number = self.page_count offset = (page_number - 1) * self.rows_per_page row_count = self.rows_per_page db_norm = DbNorm.get_db_normalizer() limit_query = db_norm.limit(offset, row_count) query = '%s %s' % (self.query, limit_query) return query