数据库数据导出为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’)

这里值得我们一提的就是最后一个参数的使用,不然从数据库中取出的数据就会使乱码。关于乱码问题,如果还有不明白的地方,不妨看下这篇文章http://blog.csdn.net/marksinoberg/article/details/52254401。

获取字段信息

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')

import xlwt

import pymysql,string

def export(host,user,password,dbname,table_name,outputpath):

conn = pymysql.connect(host,user,password,dbname,charset='utf8')

cursor = conn.cursor()

count = cursor.execute('select * from '+table_name)

print('count:',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('118.24.3.40','jxz','123456','jxz','app_student','app_student.xls')

import yagmail

#账号 密码 邮箱服务器 收件人 抄送 主题 正文 附件

username='xhylwq@163.com'

passwd='Admin12345' #邮箱的授权密码 ,#SMTP授权码 #535错误,AUTH错误,基本上是授权码错误

mail=yagmail.SMTP(user=username,password=passwd,host='smtp.163.com') #QQ邮箱要加这个参数,连接上邮箱了 #smtp_ssl=True 安全协议,,163不需要

# mail.send(to='524974839@qq.com',cc='511402865@qq.com',subject='开会123',contents='上午9点开会123') # 发送、抄送给一人

mail.send(to=['524974839@qq.com','526015033@qq.com','695374133@qq.com','xhylwq@163.com'], # 发送给多人,to传list(win10路径写\\)

cc=['511402865@qq.com','1026791861@qq.com'],

subject='app_student导出',

contents='app_student导出20:08',

attachments=r'G:\\python-DownLoad\\练习code\\day6\\day6-作业\\app_student.xls')

测试结果

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实现数据库一键导出为Excel表格-----转载相关推荐

  1. python如何读取数据并输出为表格_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  2. python数据导出excel模板中的脚本_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  3. python生成excel表格-Python实现将数据库一键导出为Excel表格的实例

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  4. python 销售数据分析输出表格_Python实现将数据库一键导出为Excel表格的实例

    Python实现将数据库一键导出为Excel表格的实例 下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例.小编觉得挺不错的,现在就分享给大家, 数据库数据导出为excel ...

  5. 导入excel表格到数据库、导入excel表格到数据库代码、根据excel表格路径将数据导入到数据库、验证要导入的excel表格数据、根据路径获取MultipartFile、FileItem文件

    导入excel表格到数据库.根据路径导入excel表格到数据库代码.根据excel表格路径将数据导入到数据库.验证要导入的excel表格数据.根据路径获取MultipartFile.FileItem文 ...

  6. excel xml mysql数据库,数据库文本文档excel表格-excel xml格式的文件 导入到 MYSQL 数据库的语句...

    教你怎样将Word表格导入到Excel中 方法如下: 1.首先,打开媒介工具"记事本",将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中将txt ...

  7. mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...

    mysqldump,NAVICAT转储,select * outfile在千级数据,万级,百万级数据下的表现. 千级数据 mysqldump导出sql文件 导出是出了拒绝访问的错误:为对应目录(.sq ...

  8. 英文版mysql数据导出_Data Loader(数据库导入导出)V4.9.4 英文版

    Data Loader(数据库导入导出)是一款专业可靠的数据库程序.能够导出和导入许多常见数据库之间的数据格式.如果你想转换MS SQL Server,CSV或女士访问MySQL,这是最好的工具有效地 ...

  9. python列表导出excel_python将字典列表导出为Excel文件的方法

    将如下的字典列表内容导出为Excel表格文件形式: python将字典列表导出为Excel文件的方法,如下所示: 1.安装python官方Excel库------xlwt 直接在终端进行安装即可:pi ...

最新文章

  1. 使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。...
  2. AVEVA软件编程是C语言么,AVEVA PDMS 三维文字工具
  3. (25)Vue.js组件通信—父组件向子组件传值
  4. 百面机器学习 #3 经典算法:02 逻辑回归
  5. css预处理器_【第十一课】初尝CSS的预处理器
  6. OpenCV-自适应阈值函数cv::adaptiveThreshold
  7. c# owc11 双Y轴
  8. 19 个接私活平台汇总,今天我们只聊用技术挣钱
  9. ADSL共享上网方式大总结(图)
  10. matlab数据归一化mapminmax函数
  11. 网页与服务器数据库数据交互,网页与ACCESS数据库如何实现数据交互?
  12. CCF CSP 201903-1 小中大(C语言100分)[序列处理]
  13. python——文件处理
  14. iis mysql安装包下载_配置Windows Server2008+iis+php+mysql所需下载安装包
  15. sql同比环比 简单示例
  16. CF1219G Harvester 题解
  17. delphi 向窗体发送一个字符串_IoT Hub入门(2)模拟设备发送设备到云(d2c)的消息
  18. 武侠小说中绝顶高手生存指南
  19. 日本美术学校有哪些,日本美术学校排名榜
  20. Linux----软件安装及程序管理

热门文章

  1. 13.5 GAS与连击
  2. Mybatis使用IPAGE排序错误
  3. 由Windows画板完成的《蒙娜丽莎》所想到的....
  4. 智慧工业能耗管理系统方案
  5. Latex 图片引用编号为问号:我也来
  6. Hexo部署github博客
  7. 菜鸟的IDEA使用Docker插件
  8. 图片玻璃光影效果制作
  9. css实现文字连续光影效果
  10. 被毁约+幸运避开裁员的秋招offer