圆月山庄资源网 Design By www.vgjia.com
本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能。分享给大家供大家参考,具体如下:
这里使用Python查询mysql数据库,并通过邮件发送宕机信息。
Python代码如下:
#-*- coding: UTF-8 -*- #!/usr/bin/env python ''''' author:qlzhong Created on 2015-6-29 征途宕机日志统计汇总 ''' import MySQLdb import time import datetime import smtplib from email.mime.text import MIMEText mailto_list=["mail@mail.com"] #mailto_list=["zhongqilong@ztgame.com"] mail_host="smtp.qq.com" #设置服务器 mail_user="" #用户名 mail_pass="" #口令 mail_postfix="" #发件箱的后缀 def send_mail(to_list,sub,content): me="hello"+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content,_subtype='plain',_charset='utf-8') msg['Subject'] = sub msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user,mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False class MySQLHelper: #配置数据库信息并连接 def __init__(self,host="****",user="****",password="****",port=3306,charset="utf8"): self.host=host self.user=user self.password=password self.port=port self.charset=charset try: self.conn=MySQLdb.connect(host=self.host,user=self.user,passwd=self.password,port=self.port) self.conn.set_character_set(self.charset) self.cur=self.conn.cursor() print("==================connect success====================") except MySQLdb.Error as e: print("Mysql Error %d: %s" % (e.args[0], e.args[1])) #取出需要统计的数据库名称 def db_name(self): un_db_name = ['information_schema','cz','ecshop','edutone','gz','mysql','newparent','parent','performance_schema','test','xx','yyhd'] name = [] try: self.cur.execute('show databases') for row in self.cur.fetchall(): for i in row: if i not in un_db_name: name.append(i) return name except MySQLdb.Error as e: print("Mysql Error %d: %s" % (e.args[0], e.args[1])) #指定查询的数据库名称 def selectDb(self,db): try: self.conn.select_db(db) except MySQLdb.Error as e: print("Mysql Error %d: %s" % (e.args[0], e.args[1])) #使用该语句来直接查询昨天和今天的差异 def monion_today_yesddiff(self, today, yestoday): try: strresult = "" strsql = 'SELECT address, charversion, sum(today) as today, sum(yesterday) as yesterday ' strsql += 'FROM (SELECT address, "" as today, tmp as yesterday, charversion FROM ( SELECT count(*) As tmp, address, charversion From `' + yestoday strsql += '` WHERE charversion like \'1.0.0.3%\' GROUP BY address) As TEST WHERE tmp>=50 ' strsql += ' union all ' strsql += 'SELECT address, tmp as today, "" as yesterday, charversion FROM (SELECT count(*) As tmp, address, charversion From `' strsql += today strsql += '` WHERE charversion like \'1.0.0.3%\' GROUP BY address) As TEST WHERE tmp>=50 ) As Diff GROUP BY address, charversion' print(strsql + "\n") self.cur.execute(strsql) name_list = [tuple[0] for tuple in self.cur.description] strresult += str(name_list) + "\n" # for row in self.cur.fetchall(): # return row s = self.cur.fetchall() todaynum = 0 yestodaynum = 0 for col in s: strresult += str(col[0]) + " " + str(col[1]) + " " + str(col[2]) + " " + str(col[3]) + "\n" todaynum += int(col[2]) yestodaynum += int(col[3]) strresult += "今日宕机总数:" + str(todaynum) + " 昨日宕机总数:" + str(yestodaynum) + " 同昨日相比增加: " + str(todaynum - yestodaynum) + "\n" return strresult except MySQLdb.Error as e: print("Mysql Error:%s\n" %(e)) def close(self): self.cur.close() self.conn.close() todayrang = 0; yestodayrang = 0; #按照范围查询 def monion_rang_today_yesddiff(self, today, yestoday, num1, num2): try: strresult = "" strsql = 'SELECT sum(today) as today, sum(yesterday) as yesterday FROM (SELECT "" as today, tmp as yesterday FROM ( SELECT count(*) As tmp From `' + yestoday strsql += '` WHERE charversion like \'1.0.0.3%\' GROUP BY address) As TEST WHERE tmp<' + str(num2) + ' AND tmp>=' + str(num1) + ' union all ' strsql += 'SELECT tmp as today, "" as yesterday FROM (SELECT count(*) As tmp From `' + today + '` WHERE charversion like \'1.0.0.3%\' GROUP BY address) As TEST WHERE tmp<' + str(num2) + ' AND tmp>=' + str(num1) + ' ) As Diff' print(strsql + "\n") self.cur.execute(strsql) name_list = [tuple[0] for tuple in self.cur.description] #strresult += str(name_list) + "\n" # for row in self.cur.fetchall(): # return row s = self.cur.fetchall() todaynum = 0 yestodaynum = 0 for col in s: strresult += str(num1) + " <= tmp < " + str(num2) + " " + str(col[0]) + " " + str(col[1]) + "\n" self.todayrang += int(col[0]) self.yestodayrang += int(col[1]) return strresult except MySQLdb.Error as e: print("Mysql Error:%s\n" %(e)) def close(self): self.cur.close() self.conn.close() #宕机数地址50以下最多的版本 def monion_rang_today_diff(self, today, num): try: strresult = "" strsql = 'SELECT charversion, sum(today) as today FROM (SELECT tmp as today, "" as yesterday, charversion FROM (SELECT count(*) As tmp, charversion From `' + today strsql += '` WHERE charversion like \'1.0.0.3%\' GROUP BY address) As TEST WHERE tmp< ' + str(num) + ') As Diff GROUP BY charversion' print(strsql + "\n") self.cur.execute(strsql) name_list = [tuple[0] for tuple in self.cur.description] #strresult += str(name_list) + "\n" # for row in self.cur.fetchall(): # return row s = self.cur.fetchall() for col in s: strresult += str(col[0]) + " " + str(col[1]) + "\n" return strresult except MySQLdb.Error as e: print("Mysql Error:%s\n" %(e)) def close(self): self.cur.close() self.conn.close() if __name__ == '__main__': textbody="" textbody = textbody + "征途宕机日志查询汇总" + "\n" #时间 timenow = datetime.datetime.now() textbody = textbody + "时间:" + timenow.strftime('%Y-%m-%d %H:%M:%S') + "\n" #连接 ipadress="192.168.100.38" port=3306 dbHelper = MySQLHelper(ipadress, "gameerror", "errorpasswd", port) textbody = textbody + "服务器地址:" + ipadress + ":" + str(port) + "\n" dbHelper.selectDb("GAMEERROR") #操作 dbname = dbHelper.db_name() textbody = textbody + "数据库:" + str(dbname[0]) + "\n" time1 = timenow + datetime.timedelta(days = -1) time2 = timenow + datetime.timedelta(days = -2) strtime1 = time1.strftime('%Y%m%d') tabletoday = "ErrorDump" + strtime1 strtime2 = time2.strftime('%Y%m%d') tableyestoday = "ErrorDump" + strtime2 textbody = textbody + "table name: today: " + tabletoday + " yestoday: " + tableyestoday + "\n" textbody = textbody + "\n昨天和今天的差异 宕机地址 版本号 今天宕机次数 昨天宕机次数" + "\n" textbody = textbody + str(dbHelper.monion_today_yesddiff(tabletoday, tableyestoday)) + "\n" textbody = textbody + "50以下地址(tmp代表某个宕机地址的个数) 今天 昨天:" + "\n" textbody = textbody + str(dbHelper.monion_rang_today_yesddiff(tabletoday, tableyestoday, 30, 50)) textbody = textbody + str(dbHelper.monion_rang_today_yesddiff(tabletoday, tableyestoday, 10, 30)) textbody = textbody + str(dbHelper.monion_rang_today_yesddiff(tabletoday, tableyestoday, 0, 10)) textbody = textbody + "50以上地址总和" + " 今天: " + str(dbHelper.todayrang) + " 昨天: " + str(dbHelper.yestodayrang) + " 今天比昨天增加: " + str(dbHelper.todayrang - dbHelper.yestodayrang) + "\n" num=50 textbody = textbody + "\n宕机数地址" + str(num) + "以下最多的版本 版本号 次数" + "\n" textbody = textbody + str(dbHelper.monion_rang_today_diff(tabletoday, num)) file_object = open('ztdumptip.txt') try: all_the_text = file_object.read() finally: file_object.close() textbody += all_the_text print(textbody) if send_mail(mailto_list,"征途客户端宕机日志统计",textbody): print "发送成功" else: print "发送失败" dbHelper.close()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python+MySQL数据库程序设计入门教程》、《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月07日
2024年11月07日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]