时间:2021-05-22
数据库数据导出为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:utf8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/20'# __Desc__ = 从数据库中导出数据到excel数据表中import xlwtimport MySQLdbconn = 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.descriptionworkbook = 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 = 1col = 0for 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:utf8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/20'# __Desc__ = 从数据库中导出数据到excel数据表中import xlwtimport MySQLdbdef 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 date1 dlut 2016-07-062 清华大学 2016-07-033 北京大学 2016-07-284 Mark 2016-08-205 Tom 2016-08-196 Jane 2016-08-21总结
回顾一下,本次试验用到了哪些知识点。
•Python简易操作数据库
•Python简易操作Excel
•数据库取出数据乱码问题解决之添加charset=utf-8
•以二维数组的角度来处理获取到的结果集。
以上这篇Python实现将数据库一键导出为Excel表格的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python实现将sqlite数据库导出转成Excel(xls)表的方法。分享给大家供大家参考,具体如下:1.假设已经安装带有sliqte库的Py
本文实例讲述了php自定义函数实现将数据以excel表格形式导出。分享给大家供大家参考,具体如下:/***导出数据为excel表格*@param*array$d
一、引言在JavaWeb开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能。二、相关jar包使用POI可
一:脚本需求利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格数据库类型:MySql数据库
本文实例讲述了PHP将Excel导入数据库及数据库数据导出至Excel的方法。分享给大家供大家参考。具体实现方法如下:一.导入导入需要使用能读取Excel的组件