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关闭windows进程的方法
Apr 18 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
python 定义给定初值或长度的list方法
Jun 23 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
python pandas生成时间列表
Jun 29 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
Python中的__init__作用是什么
Jun 09 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python中类与对象之间的关系详解
Dec 16 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP Memcached应用实现代码
2010/02/08 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
php实现无限级分类
2014/12/24 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python定时器实例代码
2017/11/01 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Python实现图像的垂直投影示例
2020/01/17 Python
方正Java笔试题
2014/07/03 面试题
西式婚礼证婚词
2014/01/12 职场文书
法学院方阵解说词
2014/01/29 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
写给医院的感谢信
2015/01/22 职场文书
关于倡议书的范文
2015/04/29 职场文书
大学生受助感言
2015/08/01 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL