将慢日志转存到数据库

import re
import MySQLdb

host='10.76.45.7'
port=3306
user='test'
password='test'
dbName='test'

def loadSlowLogtoDb(mysqlConn,keyValueList):
    insertSql="insert into slowLog( 
    Rows_examined,Rows_sent,Thread_id,arg,cmd,db,fingerprint,host,ip,timestamp,user) 
    values(%s,%s,%s,%s,%s,%s,%s,%s,%s,from_unixtime(%s),%s ) " % 
    (keyValueList['Rows_examined'],keyValueList['Rows_sent'],keyValueList['Thread_id'],keyValueList['arg'],keyValueList['cmd'],keyValueList['db'],keyValueList['fingerprint'],keyValueList['host'],keyValueList['ip'],keyValueList['timestamp'],keyValueList['user'])
    #print insertSql
    try:
        cursor = mysqlConn.cursor()
        cursor.execute(insertSql)
        mysqlConn.commit()
    except MySQLdb.Error, e:
                print "Error %s: %s" % (e.args[0], e.args[1])
                pass

def getConnection():
    try:
        conn=connection=MySQLdb.connect(host=host, port=port, user=user, passwd=password, db=dbName,connect_timeout=10)
        return conn
    except MySQLdb.Error, e:
            print "Error %s: %s" % (e.args[0], e.args[1])
        pass
    return None

slowFile = open('2330.slow.detail')
keyValueList={}
conn=getConnection()
for line in slowFile:
    if None != re.match("^$VAR1 = {$",line):
        print "begin"
        keyValueList={}
    elif None != re.match("};",line):
        print "end"
        loadSlowLogtoDb(conn,keyValueList)
    else:
        #print line
        lineStrip=line.strip()
        lineLen=len(lineStrip)
        if lineStrip.endswith(','):
            lineWitoutLastComma=lineStrip[0:-1]
        else:
            lineWitoutLastComma=lineStrip
        #print lineStrip
        keyValuePair=re.split(' => ',lineWitoutLastComma)
        if len(keyValuePair)==1:
            keyValueList["arg"]="undefined"
            continue
        #print keyValuePair[0]
        #print keyValuePair[1]
        keyValueList[keyValuePair[0]]=keyValuePair[1]
MySQL限时解答,24小时内友哥专业解答
http://www.yougemysqldba.com
如有进一步需要请联系微信onesoft007
微博账号@友哥一指
原文地址:https://www.cnblogs.com/youge-OneSQL/p/7532169.html