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

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)
posted @ 2019-06-03 14:06  haiqing_lv  阅读(207)  评论(0)    收藏  举报