flask使用pymysql连接MySQL,生成xls文件并下载到本地
2023-09-14 08:57:48 时间
版本一:将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("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()
版本二:将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("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 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()
相关文章
- MySQL修改root密码的多种方法
- 【MySQL】Insert buffer 漫谈
- 【MySQL】 DB 回滚崩溃案例一则
- 【MySql】MySQL Replication Fatal Error 1236
- linux - mysql - 卸载:RPM包安装方式的MySQL卸载
- 浅谈PHP连接MySQL数据库的三种方式
- Navicat for MySQL如何导入SQL文件
- MySQL · TokuDB · Savepoint漫谈
- docker 应用篇————mysql容器[十二]
- MYSQL简单安装配置
- MySQL · 引擎特性 · MySQL logical read-ahead
- MySQL--执行mysql脚本及其脚本编写
- Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
- MySQL · 引擎特性 · InnoDB 软链表随手记
- Atitit mybatis spring整合。读取spring、yml、文件的mysql url 步骤,读取yml,文件,使用ongl定位到url pwd usr 读取mybatis模板配置,
- Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe)
- ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 5
- MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
- mysql连接查询
- mysql索引优化策略有哪些
- Mysql之修改mysql的视图定义者
- MySQL之自带四库之mysql库
- MySQL数据库篇之mysql的快速启动和停止