Day7-数据库操作补充,读取excel,修改excel

补充一个操作 mysql 的返回值

在建立游标的时候可以指定游标类型,这样,返回的值就是指定类型了,比如

我们要让这个游标返回的数据类型是字典,可以这样写

cur = coon.cursor(cursor=pymysql.cursors.DictCursor)

这样, 获取游标数据时,返回的就是一个字典了

def my_db(host, user, passwd, db,sql, port=3306, charset='utf8'):
    conn = pymysql.connect(host=host,user=user,password=passwd,db=db,port=port,charset=charset)
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)    # 建立游标,指定游标返回的数据类型为字典
    cur.execute(sql)
    if sql.strip()[:6].lower() == 'select':
        res = cur.fetchall()  # 获取sql执行的全部结果  把数据库里的每一行放到一个 List 里面   sql语句执行的结果是多条的时候用
        # res = cur.fetchone()    # 获取sql执行的一条结果,只返回一条数据  能确定sql执行的结果只有一条数据的时候用
        # cur.description # 获取表的字段名
    else:
        conn.commit()
        res = 'OK'
    cur.close()
    conn.close()
    return res

上述函数可以获取数据库里的数据,并且返回的结果的数据类型是字典,函数里用到的模块为 pymysql

 

excel操作:

从mysql数据库中选一个表格,导出到excel里

def export_excel(table_name):
    host, user, password, db = '127.0.0.1', 'jxz', '123456', 'jxz'    # 指定数据库
    conn = pymysql.connect(host=host, user=user, password=password, port=3306, db=db, charset='utf8')   # 创建数据库连接
    cur = conn.cursor() # 建立游标
    sql = 'select * from %s' % table_name   # 获取该表的所有数据的 sql 语句
    cur.execute(sql)        # 执行sql
    fileds = [field[0] for field in cur.description]    # 获取表头字段名
    all_data = cur.fetchall()   # 获取该表格的所有数据
    book = xlwt.Workbook()
    sheet = book.add_sheet('sheet1')
    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, 用到的模块 pymysql, xlwt

使用 xlrd 模块读取 excel 的一些函数

import xlrd

book = xlrd.open_workbook('a.xlsx')
sheet = book.sheet_by_index(0)
# sheet2 = book.sheet_by_name('sheet1')
# print(sheet.cell(1,0).value)  # 指定sheet页里面行和line获取数据
# print(sheet.row_values(1))   # 获取到第几行的内容
# print(sheet.nrows)  # 获取到excel 里面共有多少行
#
# for i in range(sheet.nrows):
#     print(sheet.row_values(i))      # 循环获取每行数据

# print(sheet.col_values(0))  # 获取第几列的数据

使用 xlutils 修改excel

import xlrd
from xlutils import copy

book = xlrd.open_workbook('a.xlsx') # 先用xlrd模块打开一个excel
new_book = copy.copy(book)          # 通过xlutils模块里面的copy方法,复制一份excel
sheet =new_book.get_sheet(0)    # 获取sheet页
sheet.write(0, 0, 'id')
new_book.save('a.xls')

 

posted @ 2018-05-09 17:08  飒蓝  阅读(164)  评论(0)    收藏  举报