python 查询mysql数据导出excl_Python 2.7_初试连接Mysql查询数据导出到excel_20161216

由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可

时间紧,代码初次试验,边摸索边学习吧。

#coding:utf-8

import time

import datetime

import os

import MySQLdb

import xlsxwriter

#因为数据只更新到昨日 因此命名以昨日所在的年月日命名 同时今天执行时候删除昨日的文件

starttime=time.time()

yestoday= datetime.date.today()-datetime.timedelta(days=1)

beforeyestoday= datetime.date.today()-datetime.timedelta(days=2)

oldfile=str(beforeyestoday)+'.xlsx'

newfile=str(yestoday)+'.xlsx'

#删除昨日执行文件

if os.path.isfile(oldfile):

os.remove(oldfile)

else:

pass

#当天如果多次测试 将当天文件也删除 测试通过 条件判断可删除

if os.path.isfile(newfile):

os.remove(newfile)

else:

pass

#连接mysql 返回数据集对象

def getdata():

conn = MySQLdb.connect(host='服务器IP地址', user='root', passwd='密码', db='local_db', port=3306, charset='utf8')

cursor = conn.cursor()

test_sql = '''

SELECT DATE(订单日期) AS 订单日期,SUM(金额) AS 总计 ,SUM(IF(城市="北京",金额,NULL)) AS 北京,SUM(IF(城市="成都",金额,NULL)) AS 成都

,SUM(IF(城市="杭州",金额,NULL)) AS 杭州,SUM(IF(城市="济南",金额,NULL)) AS 济南,SUM(IF(城市="长春",金额,NULL)) AS 长春

,SUM(IF(城市="青岛",金额,NULL)) AS 青岛,SUM(IF(城市="南京",金额,NULL)) AS 南京,SUM(IF(城市="郑州",金额,NULL)) AS 郑州

,SUM(IF(城市="西安",金额,NULL)) AS 西安

FROM a003_order

WHERE 金额>0 AND 订单日期>=DATE_ADD(CURRENT_DATE,INTERVAL -15 DAY) AND 订单日期

GROUP BY DATE(订单日期)

'''

count=cursor.execute(test_sql)

data=cursor.fetchall()

fields = cursor.description

cursor.close()

conn.close()

#将数据集的表头和数据集记录传入一个字典 并返回 以便下面函数调用

dict={}

dict['fields']=fields

dict['data']=data

return dict

#获取数据集后取出记录写入excel

def write_excel():

#调用getdata()函数 将getdata()函数返回的数据集赋值给变量fields 和 data 对data进行取出数据记录操作

dict=getdata()

#获取表头

fields=dict['fields']

#获取数据集

data = dict['data']

workbook = xlsxwriter.Workbook(newfile)

worksheet = workbook.add_worksheet('data')

#表头格式

format1 = workbook.add_format({'bold': True, 'font_color': 'red','font_size':11,'align':'left','font_name':u'宋体'})

#日期A列区域

format2 = workbook.add_format({ 'font_color': 'black', 'font_size': 9,'align':'left','num_format':'yyyy-mm-dd','font_name':u'宋体'})

#除日期A列外数值区域

format3 = workbook.add_format({'font_color': 'black', 'font_size': 9, 'align': 'left','font_name':u'宋体'})

#A列列宽设置能更好的显示

worksheet.set_column("A:A", 9)

#插入第一行表头标题

for i in range(0, len(fields)):

field = fields[i][0]

worksheet.write(0, i, field.decode('utf-8'),format1)

#插入15行第一列 订单日期 日期取字符型

for j in range(0, 15):

worksheet.write(j + 1, 0, str(data[j][0]).decode('utf-8'),format2)

#插入15行第2-10列 数字取整数

for x in range(0, 15):

for y in range(1, 11):

db = int(data[x][y])

worksheet.write(x+1 , y, db,format3)

workbook.close()

return "写入成功"

print write_excel()

endtime=time.time()

print "用时"+str(endtime-starttime)+"s"

执行导出到excel是下图 数据已处理 明天执行时候会先删除今天执行生成的文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值