flask使用pymysql连接MySQL,生成xls文件并下载到本地
版本一:将MySQL数据写入到excel(xsl)文件并下载到默认文件夹(一般问电脑的下载文件夹里面),并显示特效到前端页面。
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("", 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()

版本二:将MySQL的数据写入到excel中并下载到指定路径里面
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("", 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 today = str(datetime.datetime.now())
file_name = "day_data" + today[0:13] + ".xls" fp = r"E:/我的资料/inner_ctrl01/ttt"
wb.save(file_name)
shutil.move(file_name, os.path.join(fp, file_name)) return 'ok' # 必须return,并且不能return 空 if __name__ == '__main__':
app.run()
flask使用pymysql连接MySQL,生成xls文件并下载到本地的更多相关文章
- Python3中使用PyMySQL连接Mysql
Python3中使用PyMySQL连接Mysql 在Python2中连接Mysql数据库用的是MySQLdb,在Python3中连接Mysql数据库用的是PyMySQL,因为MySQLdb不支持Pyt ...
- Python3.x使用PyMysql连接MySQL数据库
Python3.x使用PyMysql连接MySQL数据库 由于Python3.x不向前兼容,导致Python2.x中的很多库在Python3.x中无法使用,例如Mysqldb,我前几天写了一篇博客Py ...
- Python 3.2: 使用pymysql连接Mysql
在python 3.2 中连接MYSQL的方式有很多种,例如使用mysqldb,pymysql.本文主要介绍使用Pymysql连接MYSQL的步骤 1 安装pymysql · ...
- python基础学习24----使用pymysql连接mysql
使用pymysql连接mysql 安装pymysql pymysql安装可以通过两种方式 使用pip安装 首先简单说一下pip的使用方法 获取帮助 pip --help 升级 pip pip inst ...
- Python3.x:使用PyMysql连接Mysql数据库
Python3.x:使用PyMysql连接Mysql数据库 Python3.x完全不向前兼容,导致Python2.x中可以正常使用的库,到了Python3就用不了: 比如说mysqldb,目前MySQ ...
- 使用PyMySQL连接MySQL错误
使用PyMySQL连接MySQL错误 之前写了一个小项目,今天突然想起来,准备优化一下,但是原本好好的项目竟然跑不起来了 emmm....我真的啥都没干呀 具体错误是这样的: Traceback (m ...
- pycharm pymysql连接mysql 报错 pymysql.err.InterfaceError: (0, '')
pycharm pymysql连接mysql 执行MySQL操作遇到以下报错信息: conn.query(q) File "C:\Software\Python37\lib\site-p ...
- 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...
- PHP通过sql生成CSV文件并下载,PHP实现文件下载
/** * PHP通过sql生成CSV文件并下载 * @param string $sql 查询sql,结果为二维数组 * @param array $title 数据,CSV文件标题 * @para ...
随机推荐
- Docker 常用命令(四)
1. 查看容器中的进程信息: docker top 772d23 查看容器的详细信息: docker inspect 772d23 持续更新日志 docker logs -f 7732dx
- JDBC(14)—对DAO进行改进修改
结构: DAO2_7< T >(接口)->DAOTestImpl< T >(实现类)->CustomerDAO(继承的子类)->CustomerDAOTest ...
- 安装istio v1.0 详细过程和步骤
创建 istio 目录 [root@centos-110 ~]# mkdir istio [root@centos-110 ~]# cd istio 方案一: # 去下面的地址下载压缩包 # ...
- ESP-EYE V2.1 开发板 WINDOWS 10 开发入门
准备工作 1 × ESP-EYE V2.1 开发板 1 × Micro USB B 电缆 1 × PC(Windows10) 简介 ESP-EYE 是一款面向人脸识别和语音识别市场的开发板,搭载 ES ...
- 使用Guava的RateLimiter完成简单的大流量限流
限流的一般思路: 1.随机丢弃一定规则的用户(迅速过滤掉90%的用户): 2.MQ削峰(比如设一个MQ可以容纳的最大消息量,达到这个量后MQ给予reject): 3.业务逻辑层使用RateLimite ...
- Java内存管理:Java内存区域 JVM运行时数据区
转自:https://blog.csdn.net/tjiyu/article/details/53915869 下面我们详细了解Java内存区域:先说明JVM规范定义的JVM运行时分配的数据区有哪些, ...
- MongoDB地理空间数据存储及检索
目录 1.存入地理数据 GeoJSON数据存入 1.Ponit 点数据 2.LineString 线数据(多段线) 3. Polygon 多边形数据 4.MultiPoint多点.MultiLineS ...
- Java基础(四)线程快速了解
开始整理线程之前,之前有个命令忘记整理了,先整理一下jar命令的使用 Jar包 其实可以理解是java的压缩包方便使用,只要在classpath设置jar路径即可数据库驱动,ssh框架等都是以jar包 ...
- GooglePlay发布应用后,支持的 Android 设备 0 台设备
这个问题主要是权限问题: android.hardware.camera2.full #把这个权限去掉,注里能功里就不会有这一项了android.hardware.camera2.full 然后重新打 ...
- Oracle null判断并替换空值
可用 NVL(), IFNULL() ,COALESCE(),DECODE() 函数 1.NVL() 从两个表达式返回一个非 null 值.语法NVL(eExpression1, eExpress ...