Flask中实现使用SQLAlchemy MySQLdb分页的程序逻辑

逻辑的话还是蛮简单的,多查看一个文档就可以了。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
page = int(request.args.get('page')) if request.args.get('page') else 1
pagesize = 20
prev_page = page - 1 if page - 1 else 1
next_page = page + 1

# 关键字查询
keywords = request.args.get('keywords')
start_date = request.args.get('start_date')
end_date = request.args.get('end_date')

params_query = {}
query = Itunes.query
if keywords:
query = query.filter(Itunes.title.startswith(keywords))
params_query['keywords'] = keywords

if start_date and end_date:
start = '%s 00:00:00' % start_date
end = '%s 23:59:59' % end_date
start = int(time.mktime(time.strptime(start,'%Y-%m-%d %H:%M:%S')))
end = int(time.mktime(time.strptime(end,'%Y-%m-%d %H:%M:%S')))

query = query.filter(Itunes.create_time > start)
query = query.filter(Itunes.create_time <= end)

params_query['start_date'] = start_date
params_query['end_date'] = end_date

if params_query:
itunes_sum = query.count()
itunes = query.offset((page-1)*pagesize).limit(pagesize).all()
else:
itunes_sum = Itunes.query.count()
itunes = Itunes.query.offset((page-1)*pagesize).limit(pagesize).all()



return render_template(
'front/spider_apple.html',
itunes=itunes,
itunes_sum=itunes_sum,
title=u"Apple爬虫",
prev_page=prev_page,
next_page=next_page,
params=params_query
)