美文网首页
利用Python3 连接mysql 导出数据为excel格式

利用Python3 连接mysql 导出数据为excel格式

作者: SpaceNote | 来源:发表于2018-07-09 16:04 被阅读0次

    背景

    最近在工作中,遇到每隔一段时间都要跑一次数据校验。大概有15个sql语句,需要将这15个sql语句查询的记录导出并且存为excel格式。
    才开始觉得sql每次都是固定不变,总量也不多,就通过 MySQL workbench 一条一条查询导出为 *.csv文件,但是发现 *.csv文件直接打开会出现中文乱码,就需要转码,我就通过Notepad++ 打开csv文件,设置文件格式 utf-8 bom 编码。这一系列步骤下来。人都不好了。
    后面自己受不了了,就想通过脚本来解决这个重复性工作。我是一个Java开发者,就准备用Java来实现这个工作,但是后面发现Java来解决这个问题,有点太麻烦了,需要连接MySQL,查询数据,通过poi遍历做成poi对应excel的hssfworkbook对象(或者xssfworkbook),然后通过io流输出成excel文件。想到这些,就直接放弃了用Java来实现这个工作了。
    后面想到了Python,我对Python不熟。就在网上查找了一些资料,发现还是满简单的了。就这样决定用Python来实现了。

    具体实现

    下面是Python的具体实现代码:

    # coding:utf8
    import sys
    import xlwt
    #import MySQLdb
    import pymysql as MySQLdb
    import datetime
    
    def get_conn_mysql():
        conn = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='root', db='test', charset='utf8')
        return conn
    def query_data(cur, sql, args):
        cur.execute(sql, args)
        return cur.fetchall()
    
    # out_path 保存的路径, sql: 需要执行的语句
    def read_mysql_to_excel(out_path, sql):
        conn = get_conn_mysql()
        cursor = conn.cursor()
        count = cursor.execute(sql)
        if count != 0:
            print(count)
            cursor.scroll(0, mode='absolute')
            results = cursor.fetchall()
            fields = cursor.description
            workbook = xlwt.Workbook()
            sheet = workbook.add_sheet('building', cell_overwrite_ok=True)
    
            for field in range(0, len(fields)):
                sheet.write(0, field, fields[field][0])
    
            row = 1
            col = 0
            for row in range(1, len(results)+1):
                for col in range(0, len(fields)):
                    if results[row-1][col] != None:
                        sheet.write(row, col, u'%s'%results[row-1][col])
                    else:
                        val = ''
                        sheet.write(row, col, u'%s'%val)
            workbook.save(out_path)
    if __name__ == '__main__':
        # 执行的sql语句
        sql = 'select * from sys_user'
        read_mysql_to_excel('1.xls', sql)
    
    • 就这样一个简单的 导出数据为excel格式的demo就完成了。
    • 如果有多个sql语句,只需要 hard code,在分别调用那个 read_mysql_to_excel 方法就好了。

    参考资料:https://blog.csdn.net/tingzuhuitou/article/details/78749185

    文章来源:http://www.myluffy.com/2018/07/python3-link-mysql-export

    相关文章

      网友评论

          本文标题:利用Python3 连接mysql 导出数据为excel格式

          本文链接:https://www.haomeiwen.com/subject/emltpftx.html