环境:MySQLdb openpyxl模块

python去zabbix的mysql数据库中取交换机不同时间段的进出口流量,然后写入excel中,每天cron执行,每周四邮件发送。(代码中第一行必须加上,不然crontab执行不了,或者在crontab时指明环境变量)

#!/usr/local/bin/python2.7
#_*_coding:utf-8_*_
import MySQLdb
import time
from datetime import datetime
from datetime import timedelta
from openpyxl import Workbook
from openpyxl import load_workbook #根据系统时间选不同时间段
now = datetime.now()
now2 = now.strftime('%H:%M')
if now2 == '19:00':
a = timedelta(hours=-10.5)
Column = 8
elif now2 == '23:59':
a = timedelta(hours=-5)
Column = 14
else:
a = timedelta(hours=-8.5)
Column = 2
Column1 = Column
before = now + a
now = now.strftime('%Y-%m-%d %H:%M')
before = before.strftime('%Y-%m-%d %H:%M') #去mysql中取数据
def get_data(id):
conn = MySQLdb.connect(host='10.125.2.31',user='zabbix',passwd='zabbix',db='zabbix')
cur = conn.cursor() sql = "select min(round(value/1000/1000,2)) as MIN,avg(round(value/1000/1000,2)) as AVG,max(round(value/1000/1000,2)) as MAX from history where itemid=%s and from_unixtime(clock)>%s and from_unixtime(clock)<%s "
params = (id,before,now)
reCount = cur.execute(sql,params)
data = cur.fetchone() cur.close()
conn.close()
return data #写入excel
wb = load_workbook("/home/hongpeng/network/network_flow.xlsx")#打开excel
ws = wb.get_sheet_by_name('IDC')#打开sheet‘IDC流量’
def write(begin,over,Column1 = Column):
#取出第一列中每一行的数据,判断写入位置
b = []
for row_list in range(begin,over+1):
a = ws.cell(row = row_list,column = Column).value
row_list += 1
b.append(a)
#判断第一列每一行是否为空,为空就退出for循环,找到插入位置
for i in range(len(b)):
if not b[i]:
Row = begin+i
break
for k,v in enumerate(tunple):
pass
if Column1 < Column+8:
ws.cell(row=Row, column=Column1).value = tunple[k]
Column1 += 1
wb.save('/home/hongpeng/network/network_flow.xlsx') if __name__ == '__main__':
In = get_data('')
Out = get_data('')
tunple = In + Out
write(6,12)
In1 = get_data('')
Out1 = get_data('')
tunple = In1+Out1
write(18,24)
#!/bin/bash
DATE=$(date +%Y-%m-%d)
cp -p /home/hongpeng/network/network_flow.xlsx /home/hongpeng/bak/network_flow_$DATE.xlsx
rm -f /home/hongpeng/network/network_flow.xlsx
cp -p /home/hongpeng/bak/network_flow.xlsx /home/hongpeng/network

发送邮件代码

#!/usr/local/bin/python2.7
#_*_coding:utf-8_*_
__author__ = 'hongpeng'
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
_user = "13522515079@163.com"
_pwd = "9063667243hp"
_to = "1058552658@qq.com" #如名字所示Multipart就是分多个部分
msg = MIMEMultipart()
msg["Subject"] = "network_flow"
msg["From"] = _user
msg["To"] = _to #---这是文字部分---
part = MIMEText("网络流量见附件")
msg.attach(part) #xlsx类型附件
part = MIMEApplication(open('/home/hongpeng/network/network_flow.xlsx','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="network_flow.xlsx")
msg.attach(part) s = smtplib.SMTP("smtp.163.com", timeout=30)#连接smtp邮件服务器,端口默认是25
s.login(_user, _pwd)#登陆服务器
s.sendmail(_user, _to, msg.as_string())#发送邮件
s.close()

python取mysql数据写入excel的更多相关文章

  1. selenium配合phantomjs实现爬虫功能,并把抓取的数据写入excel

    # -*- coding: UTF-8 -*- ''' Created on 2016年5月13日 @author: csxie ''' import datetime from Base impor ...

  2. Python将MySQL表数据写入excel

    背景:将mysql表查询结果写入excel. 1.使用sqlyog工具将查询结果导出到Excel.xml中,用excel打开发现:因为text字段中有回车换行操作,显示结果行是乱的. 2.用mysql ...

  3. Python:将爬取的网页数据写入Excel文件中

    Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

  4. python 简单抓取网页并写入excel实例

    # -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup import xlwt import time #获取第一页 ...

  5. 初识python: xlsxwriter 将数据写入Excel

    使用 xlsxwriter 模块将数据写入excel . #!/user/bin env python # author:Simple-Sir # time:2020/9/24 12:51 # 使用 ...

  6. excel数据 入库mysql 和 mysql数据 导入excel文件

    1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...

  7. java数据写入Excel

    正好最近公司要写一个对账的功能,后台用java从银行获得对账信息,数据是json类型的,然后写入excel中发送给一卡通中心的服务器上,网上找了很多代码,然后整合和改正,代码如下. import ja ...

  8. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  9. PHP导出MySQL数据到Excel文件

    PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...

随机推荐

  1. 分布式架构中一致性解决方案——Zookeeper集群搭建

    当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...

  2. 写了一个常规性生成merge 的小脚本

    现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了. 随 ...

  3. 推荐一款 chrome SSH 插件 - Secure Shell

    http://blog.csdn.net/jizhongchun/article/details/8519413 导读:我就是一个Chrome Fans.最近发现一款google官方出的SSH插件 - ...

  4. 安卓直播开源: RTMP 推流SDK

    前些日子在github上提交了基于GPUImage的IOS直播推流SDK(https://github.com/runner365/GPUImageRtmpPush) 最近整理了android直播推流 ...

  5. 查看eclipse web项目中jsp编译后的servlet源文件【转】【JSP】

    eclipse中,jsp编译后 servlet源文件的位置为: F:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wor ...

  6. Hibernate第一个例子

    我们先搭建这样的一个架构 里面包括实体类,实现类, 大配置, 小配置(映射文件), 以及架包 实体类我们就不重点介绍了 我们先把我们所需要用到的架包导入进来 我们先在src根目录下新建一个文件夹名为l ...

  7. File类-文件基本操作

    package com.java.io; import java.io.File; import java.io.IOException; import java.math.BigDecimal; i ...

  8. oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定

    一.oracle六种连接方式 ①myEclipse中 打开myEclipse,window----show view----Other---输入DB点击DB browser 选中右键New.出现如下页 ...

  9. MVC FormCollection collection

    1.通过name获取值 collection.GetValues() 返回一个数组,适用于多选等,如果是单值可以[0] 2.直接转化为实体 将Action动作中传递的FormCollection转变成 ...

  10. C#基础系列——委托和设计模式(二)

    前言:前篇 C#基础系列——委托实现简单设计模式 简单介绍了下委托的定义及简单用法.这篇打算从设计模式的角度去解析下委托的使用.我们知道使用委托可以实现对象行为(方法)的动态绑定,从而提高设计的灵活性 ...