数据分析从MySQL开始(Python)(十三、MySQL 数据库导出到excel)

(还是一样,MySQL 使用 select 出来的的数据导出到excel 有 xlwt 和 openpyxl 两种方式,openpyxl 容量比 xlwt 更大

(建议 openpyxl 的方式导出,但是xlwt的代码我也会一起给出来;

(openpyxl  cell 和 xlwt  write 注意点:cell 从1行1列开始write 从0行0列开始

目录

简介:

一、openpyxl导出

二、xlwt导出


简介:

环境:云端数据库 导出到 本地Windows表格

实现:导出七天的记录 (一周记录)

一、openpyxl导出

py代码如下:

import datetime
import sql_order
import openpyxl

# 初始化数据库连接
operate_sql = sql_order.OperationMysql()           # 连接数据库的操作(自己写的 sql_order.py ),刚开始的第二篇还是第三篇来着,里面有,也可以用自己写的数据库连接代码,一样的;下面的代码用法一样

to_day = datetime.datetime.now()
offset = datetime.timedelta(days=-7)                # 一天前就 -1 ,一周前就 -7
yes_day = (to_day + offset).strftime('%Y-%m-%d')    # 获取到一周前的日期 年月日
yes_day_str = str(yes_day)  # 将date类型转str类型
print(yes_day_str)

sheet_name = yes_day_str

str_files = r'C:\Users\pc\Desktop'                   # 目标存放目录
out_path = str_files + '\\' + yes_day_str + ".xlsx"  # 目标路径的excel表,这里用一周前的日期命名
print("文件保存路径:", out_path)

str_sql = "SELECT * FROM `表名table` WHERE `日期`>=" + yes_day_str + " ;"  # 拼接SQL
print("sql语句:", str_sql)

messages = operate_sql.search_sql(str_sql)
print("messages预览:", messages)

operate_sql.cur.scroll(0, mode='absolute')
results = operate_sql.cur.fetchall()
fields = operate_sql.cur.description
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)

i = 1

for x in range(0, len(fields)):                               # 得到excel标题栏列名
    outws.cell(column=x+1, row=1, value="%s" % fields[x][0])  # column列 row行

for line in range(1, len(results) + 1):                       # 将获取到的数据从第二行开始进行导入到excel
    for x in range(0, len(fields)):
        outws.cell(column=x + 1, row=line+1, value="%s" % results[line - 1][x])


outwb.save(out_path)                                          # 保存结果

# 关闭数据库连接
operate_sql.disconn_sql()
print("数据库链接关闭成功!")

 

二、xlwt导出

py代码如下:

import datetime
import xlwt
import sql_order
import openpyxl

# 初始化数据库连接
operate_sql = sql_order.OperationMysql()

to_day = datetime.datetime.now()
offset = datetime.timedelta(days=-7)
yes_day = (to_day + offset).strftime('%Y-%m-%d')  # 获取到七天前的日期 年月日
yes_day_str = str(yes_day)                        # 将date类型转str类型
print(yes_day_str)

sheet_name = yes_day_str

str_files = r'C:\Users\pc\Desktop'                   # 存放目录
out_path = str_files + '\\' + yes_day_str + ".xlsx"  # 以日期命名表
print("文件保存路径:", out_path)

str_sql = "SELECT * FROM `表名table` WHERE `日期`>=" + yes_day_str + " ;"  # 拼接SQL
print("sql语句:", str_sql)

messages = operate_sql.search_sql(str_sql)
print("messages预览:", messages)

operate_sql.cur.scroll(0, mode='absolute')
results = operate_sql.cur.fetchall()
fields = operate_sql.cur.description
workbook = xlwt.Workbook()
sheet = workbook.add_sheet(sheet_name,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)):
        sheet.write(row,col, u'%s'%results[row-1][col])

workbook.save(out_path)

# 关闭数据库连接
operate_sql.disconn_sql()
print("数据库链接关闭成功!")

1、xlwt导出可以参考:http://www.voidcn.com/article/p-xcutbvkm-vn.html

2、sql_order.py 在 https://blog.csdn.net/qq_39136872/article/details/114921332 最后末尾部分,复制粘贴下来另存为 sql_order.py 文件就行;

如果出现无法import的情况把 存放 sql_order 的文件夹 选中 右键—> Mark Director as —> Sources Root ,(Pycharm)

 

你可能感兴趣的:(SQL,数据库,python,mysql,python,excel,sql)