• 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)
    总是想多努力一点的人
  • 相关阅读:
    (笔试题)镇长选举
    (笔试题)最小的非“重复的数”
    ( 笔试题)只出现一次的数
    (算法)二叉树中两个结点的最近公共父结点
    (笔试题)区间最大重叠
    (剑指Offer)面试题61:按之字形顺序打印二叉树
    (算法)Partition方法求数组第k大的数
    (剑指Offer)面试题60:把二叉树打印成多行
    整理一些不错的、网上好评的电影、电视、视频等资源地址
    个人网站/博客,建站好的域名和网站供应商网站整理
  • 原文地址:https://www.cnblogs.com/shmily2018/p/9005983.html
Copyright © 2020-2023  润新知