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的函数嵌套的使用方法
Jan 24 Python
整理Python最基本的操作字典的方法
Apr 24 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
对Python3 序列解包详解
Feb 16 Python
Python TestCase中的断言方法介绍
May 02 Python
python跳出双层for循环的解决方法
Jun 24 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python爬虫-模拟微博登录功能
Sep 12 Python
tensorflow 自定义损失函数示例代码
Feb 05 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 第三节 变量介绍
2012/04/28 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
Python 连连看连接算法
2008/11/22 Python
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
大四毕业生学习总结的自我评价
2013/10/31 职场文书
副总经理工作职责
2013/11/28 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
迟到检讨书1000字
2014/01/15 职场文书
致100米运动员广播稿
2014/02/14 职场文书
简单租房协议书
2014/04/09 职场文书
公司节能减排倡议书
2014/05/14 职场文书
酒店开业策划方案
2014/06/02 职场文书
条幅标语大全
2014/06/20 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
2015年幼师工作总结
2015/04/28 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android