当前位置: 首页 > news >正文

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)

 

转载于:https://www.cnblogs.com/shmily2018/p/9005983.html

相关文章:

  • linux下实现多台服务器同步文件(inotify-tools+rsync实时同步文件安装和配置)
  • Python实用笔记 (15)函数式编程——装饰器
  • LuoguP3621 [APIO2007]风铃
  • Python变量和基本数据类型
  • Transaction rolled back because it has been marked as rollback-only
  • 微信网页版的onclick事件不起作用
  • 记录MongoDB常用查询
  • Linux环境下mysql的root密码忘记解决方法(2种)
  • Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件
  • Vue2.0 的漫长学习ing-3-4
  • SDN学习笔记mininet+ryu开篇
  • C语言小游戏系列—恶搞关机软件,加强版
  • 第三次团队作业
  • 静态属性
  • python常用模块之json、pickle模块
  • 【EOS】Cleos基础
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • CSS盒模型深入
  • ES6 学习笔记(一)let,const和解构赋值
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript中的对象个人分享
  • Java知识点总结(JavaIO-打印流)
  • Less 日常用法
  • Median of Two Sorted Arrays
  • Protobuf3语言指南
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 程序员该如何有效的找工作?
  • 从0到1:PostCSS 插件开发最佳实践
  • 我的业余项目总结
  • 小程序 setData 学问多
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 06-01 点餐小程序前台界面搭建
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​ssh免密码登录设置及问题总结
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三)mysql_MYSQL(三)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .Net小白的大学四年,内含面经
  • .Net中的设计模式——Factory Method模式
  • .sh
  • ::before和::after 常见的用法
  • ?
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @SpringBootApplication 包含的三个注解及其含义
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [android学习笔记]学习jni编程
  • [BJDCTF 2020]easy_md5
  • [BZOJ2208][Jsoi2010]连通数
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试