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之编写类之二方法
Oct 11 Python
在Python中用keys()方法返回字典键的教程
May 21 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
创建pycharm的自定义python模板方法
May 23 Python
Python 的AES加密与解密实现
Jul 09 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
python实现图像拼接功能
Mar 23 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Django视图、传参和forms验证操作
Jul 15 Python
Django路由层如何获取正确的url
Jul 15 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设计聊天室步步通
2006/10/09 PHP
定义php常量的详解
2013/06/09 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php生成excel文件的简单方法
2014/02/08 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
简历的自我评价
2014/02/03 职场文书
中专自我鉴定
2014/02/05 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
社区反邪教工作方案
2014/06/16 职场文书
迎七一演讲稿
2014/09/12 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2015年重阳节主持词
2015/07/04 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL