Python实现将数据库一键导出为Excel表格的实例


Posted in Python onDecember 30, 2016

数据库数据导出为excel表格,也可以说是一个很常用的功能了。毕竟不是任何人都懂数据库操作语句的。

下面先来看看完成的效果吧。

数据源

Python实现将数据库一键导出为Excel表格的实例

导出结果

Python实现将数据库一键导出为Excel表格的实例

依赖

由于是Python实现的,所以需要有Python环境的支持

Python2.7.11

我的Python环境是2.7.11。虽然你用的可能是3.5版本,但是思想是一致的。

xlwt
pip install xlwt

MySQLdb
pip install MySQLdb

如果上述方式不成功的话,可以到sourceforge官网上去下载windows上的msi版本或者使用源码自行编译。

数据库相关

本次试验,数据库相关的其实也就是如何使用Python操作数据库而已,知识点也很少,下述为我们本次用到的一些简单的语句。

连接

conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')

这里值得我们一提的就是最后一个参数的使用,不然从数据库中取出的数据就会使乱码。关于乱码问题,如果还有不明白的地方,不妨看下这篇文章 浅谈编码,解码,乱码的问题

获取字段信息

fields = cursor.description

至于cursor,是我们操作数据库的核心。游标的特点就是一旦遍历过该条数据,便不可返回。但是我们也可以手动的改变其位置。

cursor.scroll(0,mode='absolute')来重置游标的位置

获取数据

获取数据简直更是轻而易举,但是我们必须在心里明白,数据项是一个类似于二维数组的存在。我们获取每一个cell项的时候应该注意。

results = cursor.fetchall()

Excel基础

同样,这里讲解的也是如何使用Python来操作excel数据。

workbook

工作薄的概念我们必须要明确,其是我们工作的基础。与下文的sheet相对应,workbook是sheet赖以生存的载体。

workbook = xlwt.Workbook()

sheet

我们所有的操作,都是在sheet上进行的。

sheet = workbook.add_sheet(‘table_message',cell_overwrite_ok=True)

对于workbook 和sheet,如果对此有点模糊。不妨这样进行假设。

日常生活中记账的时候,我们都会有一个账本,这就是workbook。而我们记账则是记录在一张张的表格上面,这些表格就是我们看到的sheet。一个账本上可以有很多个表格,也可以只是一个表格。这样就很容易理解了吧。 :-)

案例

下面看一个小案例。

# coding:utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/8/20'
# __Desc__ = 从数据库中导出数据到excel数据表中

import xlwt
import MySQLdb

conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8')
cursor = conn.cursor()

count = cursor.execute('select * from message')
print count
# 重置游标的位置
cursor.scroll(0,mode='absolute')
# 搜取所有结果
results = cursor.fetchall()

# 获取MYSQL里面的数据字段名称
fields = cursor.description
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('table_message',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(r'./readout.xlsx')

封装

为了使用上的方便,现将其封装成一个容易调用的函数。

封装之后

# coding:utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/8/20'
# __Desc__ = 从数据库中导出数据到excel数据表中

import xlwt
import MySQLdb

def export(host,user,password,dbname,table_name,outputpath):
 conn = MySQLdb.connect(host,user,password,dbname,charset='utf8')
 cursor = conn.cursor()

 count = cursor.execute('select * from '+table_name)
 print count
 # 重置游标的位置
 cursor.scroll(0,mode='absolute')
 # 搜取所有结果
 results = cursor.fetchall()

 # 获取MYSQL里面的数据字段名称
 fields = cursor.description
 workbook = xlwt.Workbook()
 sheet = workbook.add_sheet('table_'+table_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(outputpath)


# 结果测试
if __name__ == "__main__":
 export('localhost','root','mysql','test','datetest',r'datetest.xlsx')

测试结果

id name date
1 dlut 2016-07-06
2 清华大学 2016-07-03
3 北京大学 2016-07-28
4 Mark 2016-08-20
5 Tom 2016-08-19
6 Jane 2016-08-21

总结

回顾一下,本次试验用到了哪些知识点。

•Python简易操作数据库
•Python简易操作Excel
•数据库取出数据乱码问题解决之添加charset=utf-8
•以二维数组的角度来处理获取到的结果集。

以上这篇Python实现将数据库一键导出为Excel表格的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python版微信红包分配算法
May 04 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
django表单实现下拉框的示例讲解
May 29 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
Python 单例设计模式用法实例分析
Sep 23 Python
python脚本后台执行方式
Dec 21 Python
通过cmd进入python的步骤
Jun 16 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Django配置跨域并开发测试接口
Nov 04 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 #Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 #Python
python实现按任意键继续执行程序
Dec 30 #Python
详解python3实现的web端json通信协议
Dec 29 #Python
Python正则表达式如何进行字符串替换实例
Dec 28 #Python
Python写的一个定时重跑获取数据库数据
Dec 28 #Python
Python 实现文件的全备份和差异备份详解
Dec 27 #Python
You might like
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python使用zip将list转为json的方法
2018/12/31 Python
python交换两个变量的值方法
2019/01/12 Python
Python装饰器结合递归原理解析
2020/07/02 Python
如何让python的运行速度得到提升
2020/07/08 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
综合办公室主任职责
2013/12/16 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
自荐书范文范例
2014/02/13 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
工程部文员岗位职责
2015/02/04 职场文书
员工工作表扬信
2015/05/05 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL