python sql导出excel_Python导出sql语句结果到Excel

[email protected]:/tmp# vim exportsql.py

#!/usr/bin/python

# coding: utf-8import sys

import xlwt

import pymysql

import datetime

import subprocess

importtimeimport smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.application import MIMEApplication

import os.path

host= ‘localhost‘user= ‘root‘

pwd = ‘jeqThs1qOVbHGRz0‘port= 3306db= ‘mysql‘sql_file= ‘exec.sql‘sheet_name= ‘vm‘ + time.strftime("%Y-%m-%d")

filename= ‘vm_‘ + time.strftime("%Y-%m-%d") + ‘.xls‘out_path= ‘/tmp/vm_‘ + time.strftime("%Y-%m-%d") + ‘.xls‘def export():

conn= pymysql.connect(host, user, pwd, db, charset=‘utf8‘)

cursor=conn.cursor()

with open(u‘%s‘ % sql_file, ‘r+‘) as f:

sql_list= f.read().split(‘;‘)[:-1] # sql文件最后一行加上;

sql_list= [x.replace(‘\n‘, ‘ ‘) if ‘\n‘ in x else x for x insql_list] # 将每段sql里的换行符改成空格

##执行sql语句,使用循环执行sql语句for sql insql_list:

#print(sql)

count=cursor.execute(sql)

# print("查询出" + str(count) + "条记录")if count > 0:

# 来重置游标的位置

cursor.scroll(0, mode=‘absolute‘)

# 搜取所有结果

results=cursor.fetchall()

# 获取MYSQL里面的数据字段名称

fields=cursor.description

workbook= xlwt.Workbook(encoding=‘utf-8‘) # workbook是sheet赖以生存的载体。

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= 1col= 0

for row in range(1, len(results) + 1):for col in range(0, len(fields)):

sheet.write(row, col, u‘%s‘ % results[row - 1][col])

workbook.save(out_path)else:

pass

_user= ""_pwd= "*********"areceiver= ""#抄送人,可写可不写,多个用,隔开

acc= "*****@capitalonline.net"msg=MIMEMultipart()

msg["Subject"] = u‘data_‘ + time.strftime("%Y-%m-%d")

msg["From"] =_user

msg["To"] =areceiver

msg["Cc"] =acc

def send_email():

content= ‘‘‘Hello, everyone,This is a test email! Have a nice day!‘‘‘part= MIMEText(content, ‘plain‘, ‘utf-8‘)

msg.attach(part)iffilename:

file_name= ‘/tmp/‘ +filename

part= MIMEText(open(file_name, ‘rb‘).read(), ‘base64‘, ‘gb2312‘)

part["Content-Type"] = ‘application/octet-stream‘

basename = os.path.basename(file_name)

part["Content-Disposition"] = ‘attachment; filename=%s‘ % basename.encode(‘gb2312‘)

msg.attach(part)

s= smtplib.SMTP("smtp.exmail.qq.com", timeout=305)

s.login(_user, _pwd)

s.sendmail(_user, areceiver.split(‘,‘) + acc.split(‘,‘), msg.as_string())

s.close()else:

passif __name__ == "__main__":

export()

send_email()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值