python 处理大量数据_python 中如何处理大量数据分页显示在html中?

使用csv直接渲染到html不太合理尤其是访问量很大的时候。

现在数据库支持csv很好,为什么不先导入一下呢,然后就以数据库的方式与html模板交互。

简单做了一个,大量数据会有性能问题,看看自己用生成器改下吧

views.pyfrom __future__ import division

from flask import Flask,request,url_for,g,render_template

import csv

import os

from math import ceil

app = Flask(__name__)

@app.before_request

def load_csv():

g.path = os.path.join(os.path.abspath(os.path.dirname(__file__)),'data.csv')

@app.route('/read_csv/page/')

def read_csv(page_num):

'''

目标url

http://127.0.0.1:5000/read_csv/page/1?limit=100

'''

# 若不指定limits默认为100

limits = request.args.get('limits')

if limits:

limits = int(limits)

else:

limits=100

# 根据limits和所在页数生成数据

def show_csv(reader,page=page_num,limits=limits):

df = []

for row in reader:

if page_num*limits >= reader.line_num > (page_num-1)*limits:

df.append(row)

return df

# 计算页面数

with open(g.path,'r+') as f:

row_length = len(f.readlines())

pages = int(ceil(row_length/limits))

# 计算数据

with open(g.path,'r+') as f:

reader = csv.reader(f)

df = show_csv(reader,page_num,limits)

return render_template('main.html',df=df,pages=pages,page_num=page_num,limits=limits)

if '__main__' == __name__:

app.run(debug=True)

main.html

{% for row in df %}

{{row}}

{% endfor %}


{% for page in range(pages+1) %}

{{ loop.index }}

{% endfor %}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值