flask使用pymysql连接MySQL,生成xls文件并下载到本地

flask使用pymysql连接MySQL,生成xls文件并下载到本地

flask框架连接MySQL,我们使用pymsql这个工具,如下操作:

from flask import Flask
import pymysql
import xlwt
from io import BytesIO
from flask import make_response


db = pymysql.connect(host='127.0.0.1',port=3306,user='user', passwd='pwd', db='db_name', charset='utf8')  # 创建链接


def data_db():  # 去数据库取数据,假设数据库表只有4个字段
    sql = """
          select * from table_name;
          """
    cc = db.cursor()  # 其实就是用来获得python执行Mysql命令的方法,也就是
我们所说的操作游标 cc.execute(sql) # 真正执行sql语句 cn
= cc.fetchall() # 接收全部的返回结果行row return cn # 返回 app = Flask(__name__) @app.route('/index_up') # 设置路由 def index_list(): # 执行视图函数 ret = data_db() # 获取数据 wb = xlwt.Workbook(encoding='utf-8') # 实例化,有encoding和style_compression参数 ws = wb.add_sheet("111", cell_overwrite_ok=True) # Workbook的方法,生成名为111.xls文件 row0 = ['字段1', '字段2', '字段3', '字段4'] # 指定xls文件的字段 for i in range(0, len(row0)): # 将这些字段写入111.xls文件 ws.write(0, i, row0[i]) k = 1 for i in ret: # 循环每一列 for j in range(4): # 在每列添加数据 ws.write(k, j, i[j])
k += 1 sio
= BytesIO() # 将获取的数据在内存中写,有时会用到StringIO() wb.save(sio) # 将文件流保存 sio.seek(0) # 光标 response = make_response(sio.getvalue()) # response.headers['Content-type'] = 'application/vnd.ms-excel' # 指定返回的类型 response.headers['Transfer-Encoding'] = 'chunked' response.headers['Content-Disposition'] = 'attachment;filename=111.xls' # 设定用户浏览器显示的保存文件名 return response # 返回response,浏览器会出现如下效果,如果返回其他,比如None就会只下载不在浏览器提示。 if __name__ == '__main__': app.run()

 

 

posted @ 2019-01-09 18:34 aaronthon 阅读( ...) 评论( ...) 编辑 收藏
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值