美文网首页
3.python实现Mysql数据读取到Excel

3.python实现Mysql数据读取到Excel

作者: yhxt | 来源:发表于2018-03-27 20:21 被阅读0次

    1.环境介绍:

    • python版本:3.6.4
    • pymysql: 0.8.0
    • xlwt: 1.3.0

    pymysql安装
    pip install pymysql

    xlwt安装
    pip install xlwt

    2.说明

    • 获取字段信息
      fields = cursor.description
    • 获取数据
      数据项是一个类似于二维数组的存在。我们获取每一个cell项的时候应该注意。
      results = cursor.fetchall()
    • 创建workbook对象
      workbook = xlwt.Workbook()
    • 获取sheet
      ``sheet = workbook.add_sheet('表名称',cell_overwrite_ok=True)

    3.代码示例

    注意:dominotypedata为数据库名;mobile_login为表名字

    import pymysql
    import xlwt
    
    conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='password',db='dominotypedata',charset='utf8')
    cursor = conn.cursor()
    
    count = cursor.execute('select * from mobile_login')
    # 打印出总共条数
    print(count)
    
    # 重置游标位置,指定游标位置从最初开始
    cursor.scroll(0,mode='absolute')
    # 查询所有结果
    results = cursor.fetchall()
    # print(results)  遍历所有数据,在一个元组中
    # for result in results:
        # print(result) 一条条遍历所有数据
        # print('id:%s' % result[0])
        # print('时间:%s' % result[1])
        # print('uid:%s' % result[2])
        # print('姓名:%s' % result[3])
        # print('所属地市:%s' % result[4])
    
    # 获取mysql里面的数据字段名称
    fields = cursor.description
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet('mobile_login',cell_overwrite_ok=True)
    
    # 字段信息
    for field in range(0,len(fields)):
        sheet.write(0,field,fields[field][0])
        # print(fields[field][0])   打印出mysql字段名称
    
    # 获取并写入数据库字段信息
    row = 1
    col = 0
    for row in range(1,len(results)+1):
        for col in range(0,len(fields)):
            sheet.write(row,col,'%s' % results[row-1][col])
    workbook.save('./yh.xls')
    print('导出结束!总共导出:%d 条数据!' % count)
    conn.close()
    
    代码截图 数据库样式 导出excel样式

    4.代码封装成函数调用

    为了便于使用,可以将上面代码封装起来,调用的时候只需要传入相关参数即可

    import pymysql
    import xlwt
    
    def export(host,user,passwd,dbname,table_name,outpath):
        conn = pymysql.connect(host,user,passwd,dbname,charset='utf8')
        cursor = conn.cursor()
    
        count = cursor.execute('select * from %s' % table_name)
        # 打印出总共条数
        print(count)
    
        # 重置游标位置,指定游标位置从最初开始
        cursor.scroll(0,mode='absolute')
        # 查询所有结果
        results = cursor.fetchall()
        # print(results)  遍历所有数据,在一个元组中
        # for result in results:
            # print(result) 一条条遍历所有数据
            # print('id:%s' % result[0])
            # print('时间:%s' % result[1])
            # print('uid:%s' % result[2])
            # print('姓名:%s' % result[3])
            # print('所属地市:%s' % result[4])
    
        # 获取mysql里面的数据字段名称
        fields = cursor.description
        workbook = xlwt.Workbook()
        sheet = workbook.add_sheet('%s' % table_name,cell_overwrite_ok=True)
    
        # 字段信息
        for field in range(0,len(fields)):
            sheet.write(0,field,fields[field][0])
            # print(fields[field][0])   打印出mysql字段名称
    
        # 获取并写入数据库字段信息
        row = 1
        col = 0
        for row in range(1,len(results)+1):
            for col in range(0,len(fields)):
                sheet.write(row,col,'%s' % results[row-1][col])
        workbook.save(outpath)
        print('导出结束!总共导出:%d 条数据!' % count)
        conn.close()
    
    if __name__ == "__main__":
        export('loclhost','root','password','dominotypedata','mobile_login','yhxt.xls')
    
    封装后代码截图

    运行结果和封装前的是一样的。

    相关文章

      网友评论

          本文标题:3.python实现Mysql数据读取到Excel

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