python mongodb分页查询_python--mongodb 翻页工具

由于mongodb的翻页使用的是skip,而不是limit start,end,所以计算的应该是每页应该skip的数据,以下分页工具可以完成mongodb的分页要求

#turn page util

class Paginator(object):

def __init__(self,total_records=None,per_page=None):

#total records

self.total_records = total_records

#perpage size

self.per_page = per_page

#total pages

self.total_pages = 0

#perpage skip infor

self.data={}

self.__judge__()

def __judge__(self):

#caculate total pages

if self.total_records>self.per_page:

self.total_pages = int(floor(self.total_records/float(self.per_page)))

self.data[1]=Page(self,page_number=1,skip=0)

for i in range(1,self.total_pages):

self.data[i+1]=Page(self,page_number=i+1,skip=self.data[i].skip+self.per_page)

#如果计算出来的页数不恰巧是个整数,那么还需要计算最后一页

if self.total_pages

#计算最后一页,因为最后一页肯定是能全页显示的

self.data[self.total_pages+1]=Page(self,self.total_pages+1,skip=self.data[self.total_pages].skip+self.per_page)

else:

self.total_pages=1

self.data[1]=Page(self,1,skip=0)

def get_page(self,page_number):

page_number = int(page_number)

if page_number in self.data.keys():

return self.data[page_number]

else:

return None

#page

class Page(object):

def __init__(self,paginator,page_number=1,skip=0):

self.page_number=page_number

self.skip = skip

self.paginator = paginator

self.next_page_number = self.page_number+1

self.prev_page_number = self.page_number-1

def has_next(self):

return self.page_number

def has_prev(self):

return self.page_number>1

def get_next_page(self):

return self.paginator.get_page(self.next_page_number)

def get_prev_page(self):

return self.paginator.get_page(self.prev_page_number)

15

22

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-07-28 00:17

浏览 2111

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值