0
点赞
收藏
分享

微信扫一扫

【Python之pymysql库学习】8.数据库导出数据为excel文件(保姆级图文+实现代码)

目录


实现效果

被读取的数据表
在这里插入图片描述
读取得到的学生成绩
在这里插入图片描述


实现思路

被读取的数据库的数据表来自前面的系列文章生成数据表,插入数据。

  1. 建立与数据库的连接,cursor.fetchall()读取得到数据。

  2. 建立一个excel_workbook表示excel文件

  3. 选定要写入数据的sheet表

 excel_sheet=excel_workbook.create_sheet("学生成绩表")#在工作簿中建立一个工作学生成绩表,作为当前要写入内容的表

效果如下
在这里插入图片描述

excel_sheet=excel_workbook.active #使用默认的sheet表,不新建表,切换当前把数据写入此表

在这里插入图片描述

  1. 写入数据,保存文件

先介绍一下特殊的enumerate循环,高端写法

先把一行表头写入

# openpyxl操作excel是,行和列的索引从1开始,所以要+1, col_id, col_name表示索引和索引内容
for col_id, col_name in enumerate(['sno','sname','sex','age','score']):#列索引,读取那些列的数据
        excel_sheet.cell(1,col_id+1,col_name)#往单元格写入数据,第1列表格的表头'sno','sname','sex','age','score'写入
        

写入value,保存文件

# 写入数据
for row_id,row_emp in enumerate(cursor.fetchall()):#获得每一行的数据
     for col_id,col_value in enumerate(row_emp):#把每一行的每一列写入,加2是因为原先表头+1的基础上,再加上表头这一行,所以要+1+1=+2
          excel_sheet.cell(row_id+2,col_id+1,col_value)
  1. 保存文件
 excel_workbook.save("读取到的学生成绩.xlsx")

实现代码

# @Time    : 2022/1/16 12:46
# @Author  : 南黎
# @FileName: 8.数据库导出数据为excel文件.py
import pymysql
import openpyxl  # 用户操作excel的库

conn = pymysql.connect(
    host='localhost',
    user='root',
    password='root',
    database='python',
    port=3306,
    autocommit=False,
    charset="utf8mb4"
)
#从excel中读取到学生的sno,sname,sex,age,score并放入数据库
try:
    with conn.cursor() as cursor:#创建游标,在这里conn.cursor()==cursor
        cursor.execute(
            'select sno,sname,sex,age,score from student'
        )
        excel_workbook=openpyxl.Workbook()#创建一个excel工作簿
        # excel_sheet=excel_workbook.create_sheet("学生成绩表")#在工作簿中建立一个工作学生成绩表,作为当前要写入内容的表
        excel_sheet=excel_workbook.active #使用默认的sheet表,不新建表,切换当前把数据写入此表
        #注意数据量比较少的时候用fetchall(),一行一行的读取,这里数据量少就直接fetchall()了

        # openpyxl操作excel是,行和列的索引从1开始,所以要+1, col_id, col_name表示索引和索引内容
        for col_id, col_name in enumerate(['sno','sname','sex','age','score']):#列索引,读取那些列的数据
            excel_sheet.cell(1,col_id+1,col_name)#往单元格写入数据,第1列表格的表头'sno','sname','sex','age','score'写入
        # 写入数据
        for row_id,row_emp in enumerate(cursor.fetchall()):#获得每一行的数据
            for col_id,col_value in enumerate(row_emp):#把每一行的每一列写入,加2是因为原先表头+1的基础上,再加上表头这一行,所以要+1+1=+2
                excel_sheet.cell(row_id+2,col_id+1,col_value)
    excel_workbook.save("读取到的学生成绩.xlsx")
except pymysql.MySQLError as err:#捕获异常
    print(err)#如果出现异常,打印错误信息
finally:
    conn.close()#无论如何都要关闭连接,节省资源占用




总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python知识!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-15


举报

相关推荐

0 条评论