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')

浙公网安备 33010602011771号