需求:
用于将mysql数据库中的几百张表导出成excel方式
表中有些字段的值是含有双引号和逗号值,比如json值
表中有些字段是汉字内容
导出的excel要求有表的列名
shell对于含有逗号和双引号的值会错乱分割
数据库中某些字段值是化学符号
import pymysql,os,csv,shutil
target_dir=r'C:\Users\XXX\Desktop\excel'
if os.path.exists(target_dir):shutil.rmtree(target_dir)os.mkdir(target_dir)
else:os.mkdir(target_dir)myconn=pymysql.connect(host='localhost',port=3306,user='root',password='123456',database='rhtx')
table_sql="select table_name from information_schema.tables where table_schema='rhtx'"
with myconn.cursor() as cursor:cursor.execute(table_sql)table_name=list(cursor.fetchall())for name in table_name:file_name=name[0]+".csv"file_path = os.path.join(target_dir, file_name)sql='select * from '+'rhtx.'+name[0]with myconn.cursor() as cursor:cursor.execute(sql)rows=cursor.fetchall()with open(file_path, mode='w', newline='',encoding='gbk') as file:writer=csv.writer(file)writer.writerow([i[0] for i in cursor.description])writer.writerows(rows)
myconn.close()