如何导出数据库中的内容

如何导出数据库中的内容

#encoding=utf-8
import pymysql
import string
import xlsxwriter
import datetime

# 定义时间标志变量
sheet_time = datetime.datetime.now()
sheet_mark = sheet_time.strftime('%Y-%m-%d')
book_mark = sheet_time.strftime('%Y%m%d')

# 定义输出excel文件名
workbook = xlsxwriter.Workbook('select_'+book_mark+'.xlsx')

# 定义sheet的名字
worksheet = workbook.add_worksheet(sheet_mark)

# 定义sheet中title的字体format
bold = workbook.add_format({'bold': True})

# 定义sql查询命令
cmd="select * from db3.student;"

# 定义链接mysql的用户信息 字典
# Loginfo = {'USER':'admin', 'PSWD':'admin', 'HOST':'10.10.60.105', 'PORT':4001}

# 调用MySQLdb模块 链接 mysql
conn=pymysql.connect(host= "localhost",database="db3",user="root",password="123456",charset='utf8')
cur=conn.cursor()
cur.execute(cmd)

# 查询数据结果和字段名字 赋值给两个变量
result = cur.fetchall()  #查询的数据信息
fields = cur.description # 查询到的标题描述信息

# 将结果写入excel中

# 定义title的坐标:row=0,col=0~字段总数 也就是excel的第一行:0,0  ~ 0,len(fields)

# 关于fields的结果如下图:通过fields[field][0] 获取字段名

for field in range(0,len(fields)):
    worksheet.write(0,field,fields[field][0],bold)

#数据坐标0,0 ~ row,col   row取决于:result的行数;col取决于fields的总数
for row in range(1,len(result)+1):
    for col in range(0,len(fields)):
        worksheet.write(row,col,u'%s' % result[row-1][col])
cur.close()
conn.close()
workbook.close()

导出来的数据在当前py文件的相同文件夹下

 

导出数据不能显示中文和解决办法,字符集编码的问题。
1.
conn=pymysql.connec(charset='utf8'),设置下读取数据的编码。
2.
Excel版本问题 ,导出文件的格式: .xlsx/xls。或者打开方式:WPS或者Excel

 

posted on 2018-06-11 16:04  王大拿  阅读(828)  评论(0)    收藏  举报

导航