zoukankan      html  css  js  c++  java
  • 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("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()
  • 相关阅读:
    【干货】和你谈谈数据分析报告
    输入整型数组和排序标识
    删除字符串中出现次数最少的字符
    字符串排序
    老男孩Django笔记(非原创)
    Cloakroom
    星际网络
    乘车路线
    渔民的烦恼
    【教程】Microsoft Wi-Fi Direct Virtual关闭方法
  • 原文地址:https://www.cnblogs.com/aaronthon/p/10245894.html
Copyright © 2011-2022 走看看