小白的我的本意是想实现,在一个路径下的多个sql文件可以循环执行出来并写入到同一个表格文件的不同的sheet里面。但是在最后写入文件的时候我不会了。路径下一共有两个sql文件,我的记录会覆盖前一个记录!!!!
只能说基本功不好的我,不知道该怎么办了,求教怎么将循环输出的列表,分别放入不同的sheet里面
唉:-(
def execute_sql(db_name,cursor,path): """执行指定目录下的.sql文件""" path_list = os.listdir(path) #path_list.remove('.DS_Store') # macos中的文件管理文件,默认隐藏,这里可以忽略 db = mysql_link(db_name) # 打开数据库连接 cursor = db.cursor() # 使用 cursor() 方法创建一个游标对象 cursor os.chdir(path) for each in os.listdir("."): count = 0 #读取行数 sql = "" #拼接的sql语句 with open(each, "r", encoding="utf-8") as f: for each_line in f.readlines(): # 过滤数据 if not each_line or each_line == "\n": continue # 读取2000行数据,拼接成sql elif count < 2000: sql += each_line count += 1 # 读取达到2000行数据,进行提交,同时,初始化sql,count值 else: cursor.execute(sql) db.commit() sql = each_line count = 1 # 当读取完毕文件,不到2000行时,也需对拼接的sql 执行、提交 if sql: cursor.execute(sql) result = cursor.fetchall() writeToExcel('D:\\测试.xlsx',result) print(result) db.commit() return result # 把二维列表存入excel中 def writeToExcel(file_path,new_list): wb = openpyxl.Workbook() ws = wb.active ws2 = wb.create_sheet() for r in range(len(datas)): for c in range(len(datas[0])): ws.cell(r + 1, c + 1).value = datas[r][c] # excel中的行和列是从1开始计数的,所以需要+1 wb.save(file_path) # 注意,写入后一定要保存 print("成功写入文件: " + file_path + " !") return 1
全部评论
(1) 回帖