mysql导出csv或者xlspython脚本
功能:从mysql数据库导出csv格式或者xls格式。
import win32api import win32con import xlwt import pymysql import xlrd import csv import codecs host = "127.0.0.1" user = "root" pwd = "密码" db = "test_zc" sql = "select * from test123" sheet_name = "test123" out_path = "test123.xls" def export(): """导出数据""" conn = pymysql.connect(host="127.0.0.1", user="root", password="密码", database="test_zc", charset="utf8") cursor = conn.cursor() count = cursor.execute(sql) print(count) cursor.scroll(0, mode="absolute")#获取结果集 从第一行移动 results = cursor.fetchall() #获取字段名 fields = cursor.description workbook = xlwt.Workbook() # 注意: 在add_sheet时, 置参数cell_overwrite_ok=True, 可以覆盖原单元格中数据。 # cell_overwrite_ok默认为False, 覆盖的话, 会抛出异常. sheet = workbook.add_sheet(sheet_name, cell_overwrite_ok=True)#设置表格样式 #写上字段信息 for field in range(0, len(fields)): sheet.write(0, field, fields[field][0]) #获取并写入数据段信息 # row = 1 # col = 0 for row in range(1, len(results) + 1): # print(results[row - 1][1]) for col in range(0, len(fields)): print(results[row - 1][col]) sheet.write(row, col, u"%s" % results[row - 1][col]) # sheet.write(row,col,results[row-1][col]) workbook.save(out_path) try: export() win32api.MessageBox(0, "导出数据 成功", "提示", win32con.MB_OK) except Exception as e: print(e) win32api.MessageBox(0, "导出数据 失败 %s" % e, "提示", win32con.MB_OK) #将导出的xls转csv utf_8_sig解决乱码 def xlsx_to_csv(): workbook = xlrd.open_workbook("C:UsersadminDesktoptest123.xls") table = workbook.sheet_by_index(0) with codecs.open("1.csv","w",encoding="utf_8_sig") as f: write = csv.writer(f) for row_num in range(table.nrows): row_value = table.row_values(row_num) write.writerow(row_value) if __name__ == "__main__": xlsx_to_csv()