亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)的查詢mysql數(shù)據(jù)庫并通過郵件發(fā)送信息功能

 更新時間:2018年05月17日 12:20:32   作者:江楓漁火2017  
這篇文章主要介紹了Python實現(xiàn)的查詢mysql數(shù)據(jù)庫并通過郵件發(fā)送信息功能,可實現(xiàn)Python針對mysql的查詢與宕機信息通過郵件發(fā)送的相關操作技巧,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)的查詢mysql數(shù)據(jù)庫并通過郵件發(fā)送信息功能。分享給大家供大家參考,具體如下:

這里使用Python查詢mysql數(shù)據(jù)庫,并通過郵件發(fā)送宕機信息。

Python代碼如下:

#-*- coding: UTF-8 -*-
#!/usr/bin/env python
'''''
author:qlzhong
Created on 2015-6-29
征途宕機日志統(tǒng)計匯總
'''
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="" #發(fā)件箱的后綴
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:
  #配置數(shù)據(jù)庫信息并連接
  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]))
  #取出需要統(tǒng)計的數(shù)據(jù)庫名稱
  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]))
  #指定查詢的數(shù)據(jù)庫名稱
  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 += "今日宕機總數(shù):" + str(todaynum) + "  昨日宕機總數(shù):" + 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()
  #宕機數(shù)地址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 + "數(shù)據(jù)庫:" + 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昨天和今天的差異 宕機地址 版本號 今天宕機次數(shù) 昨天宕機次數(shù)" + "\n"
  textbody = textbody + str(dbHelper.monion_today_yesddiff(tabletoday, tableyestoday)) + "\n"
  textbody = textbody + "50以下地址(tmp代表某個宕機地址的個數(shù)) 今天 昨天:" + "\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宕機數(shù)地址" + str(num) + "以下最多的版本 版本號 次數(shù)" + "\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,"征途客戶端宕機日志統(tǒng)計",textbody):
    print "發(fā)送成功"
  else:
    print "發(fā)送失敗"
  dbHelper.close()

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python+MySQL數(shù)據(jù)庫程序設計入門教程》、《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python數(shù)學運算技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python人工智能tensorflow常見損失函數(shù)LOSS匯總

    python人工智能tensorflow常見損失函數(shù)LOSS匯總

    這篇文章主要為大家介紹了python人工智能tensorflowf常見損失函數(shù)LOSS匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Django 接收Post請求數(shù)據(jù),并保存到數(shù)據(jù)庫的實現(xiàn)方法

    Django 接收Post請求數(shù)據(jù),并保存到數(shù)據(jù)庫的實現(xiàn)方法

    今天小編就為大家分享一篇Django 接收Post請求數(shù)據(jù),并保存到數(shù)據(jù)庫的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)給scatter設置顏色漸變條colorbar的方法

    python實現(xiàn)給scatter設置顏色漸變條colorbar的方法

    今天小編就為大家分享一篇python實現(xiàn)給scatter設置顏色漸變條colorbar的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python SQLite3簡介

    Python SQLite3簡介

    這篇文章主要為大家詳細介紹了Python SQLite3的簡單介紹以及使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python3.5 + sklearn利用SVM自動識別字母驗證碼方法示例

    Python3.5 + sklearn利用SVM自動識別字母驗證碼方法示例

    這篇文章主要給大家介紹了關于Python3.5 + sklearn利用SVM自動識別字母驗證碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • python對兩個數(shù)組進行合并排列處理的兩種方法

    python對兩個數(shù)組進行合并排列處理的兩種方法

    最近遇到數(shù)組合并問題,以此記錄解決方法,供大家參考學習,下面這篇文章主要給大家介紹了關于python對兩個數(shù)組進行合并排列處理的兩種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 對Django中的權限和分組管理實例講解

    對Django中的權限和分組管理實例講解

    今天小編就為大家分享一篇對Django中的權限和分組管理實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Pandas處理時間序列數(shù)據(jù)操作詳解

    Pandas處理時間序列數(shù)據(jù)操作詳解

    這篇文章主要介紹了Pandas處理時間序列數(shù)據(jù)操作詳解,文章首先利用python自帶datetime庫,通過調用此庫可以獲取本地時間展開內容說明具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Python響應對象text屬性亂碼解決方案

    Python響應對象text屬性亂碼解決方案

    這篇文章主要介紹了Python響應對象text屬性亂碼解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • python快速建立超簡單的web服務器的實現(xiàn)方法

    python快速建立超簡單的web服務器的實現(xiàn)方法

    某些條件測試,需要一個簡單的web服務器測試一下,為此專門去配置個nginx 或者 apache服務器略顯麻煩,這里就為大家介紹一下使用python快速建立超簡單的web服務器的方法,需要的朋友可以參考下
    2018-02-02

最新評論