python学习笔记-day7-2-python从mysql数据库导数据到excel,读excel,修改excel

Posted 懒懒的妞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记-day7-2-python从mysql数据库导数据到excel,读excel,修改excel相关的知识,希望对你有一定的参考价值。

这节说下如何用python把数据库里的数据导出到excel里,并如何读取excel, 修必excel等操作。

 

一、用python把数据库里的数据导出到excel里

1、导入如下的模块,没有的话需要安装

import pymysql #mysql连接模块
import xlwt #写excel的第三方库

 

从数据库导数据,写到excel文件里

import pymysql,xlwt

def export_excel(table_name):
import pymysql
host, user, passwd, db = \'127.0.0.1\', \'xxx\', \'123456\', \'xxxx\'
conn = pymysql.connect(user=user,host=host,port=3306,passwd=passwd,db=db,charset=\'utf8\')
cur = conn.cursor() # 建立游标
sql = \'select * from %s;\' %table_name
cur.execute(sql) # 执行mysql
fileds = [filed[0] for filed in cur.description] # 列表生成式,所有字段
all_data = cur.fetchall() #所有数据
#写excel
book = xlwt.Workbook() #先创建一个book
sheet = book.add_sheet(\'sheet1\') #创建一个sheet表
# col = 0
# for field in fileds: #写表头的
# sheet.write(0, col, field)
# col += 1
#enumerate自动计算下标
for col, field in enumerate(fileds): #跟上面的代码功能一样
sheet.write(0, col, field)

#从第一行开始写
row = 1 #行数
for data in all_data: #二维数据,有多少条数据,控制行数
for col, field in enumerate(data): #控制列数
sheet.write(row, col, field)
row += 1 #每次写完一行,行数加1
book.save(\'%s.xls\' %table_name) #保存excel文件

export_excel(\'app_student\')

结果,生成了app_student.xls文件


二、内置函数enumerate 
# enumerate #自动计算下标
# fileds = [\'id\', \'name\', \'sex\', \'addr\', \'gold\',\'score\']
# for index, filed in enumerate(fileds): #同时打印下标
# print(index, filed)

 

三、读excel

 

 四、修改excel

import xlrd
from xlutils import copy #这个模块需要这样导入

 

 

五、操作数据库,excel操作小结

    cur = coon.cursor(cursor=pymysql.cursors.DictCursor)
建立游标的时候指定了游标类型,返回的就是一个字典了。
fetchall() #获取到这个sql执行的全部结果,它把数据库表里面的每一行数据放到一个list里面
[ [\'1\',\'2\',\'3\'] ] [{},{},{}]
fetchone() #获取到这个sql执行的一条结果,它返回就只是一条数据

如果sql语句执行的结果是多条数据的时候,那就用fetchall()
如果你能确定sql执行的结果就只有一条,那么就用fetchone()

需求:只要你传入一个表名,就能把所有的数据导入出来,字段名是excel的表头
1、要动态获取到表的字段 cur.description能获取到表的字段
fileds = [ filed[0] for filed in cur.description ]
2、获取数据了 select * from "%s" % table_name
3、循环写入excel

enumerate([list,list2]) #循环的时候,直接获取到下标,和值
for index,value in enumerate([list,list2]):
print(index,vlaue)

 

以上是关于python学习笔记-day7-2-python从mysql数据库导数据到excel,读excel,修改excel的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记-2017.5.4thon学习笔记-2017.8.08

流畅的python和cookbook学习笔记

Python学习笔记 capture 1

从0开始入门python一个半月的三万字学习笔记汇总!!!

Python学习笔记__9章 IO编程

Python学习笔记:列表和元组