数据库系统脚本

脚本各个功能分解
1.反转数字功能

#反转数字
def reverse(str):
        rstr = ''
        lstr = list(str)
        for i in range(len(str),0,-1):
                rstr += ''.join(lstr[i-1])
        return rstr


2.执行脚本,调用系统文件

def execPerformancescript(jb):
        handle = subprocess.Popen(jb, stdout=subprocess.PIPE, shell=True)    
        handle.stdout.read()    
        handle.communicate()


3.解析字段对比

def compareQuery( fileName,filePath):
        
        f = open(filePath,"r")
        line = f.readlines()

        queryList = []
        groupList = []
        sqlList = []

        for strRead in line:
                if strRead.find("Query") > -1 :
                        queryList.append(strRead)
                        break
        for strRead in line:
                if strRead.find("QueryGroup") > -1 :
                        groupList.append(strRead)
                        break
        f.close()
        return queryList,groupList


4.调用的脚本执行时间统计

def comparePerformance( fileName,filePath):
        
        f = open(filePath,"r")
        line = f.readlines()

        timeList= []
        SQLStr = []

        for strRead in line:
                if strRead.find("Use Time(usec)") > -1 :
                        timeList.append(strRead)
        sumPerf =0

        #显示结果
        for str1 in timeList[::2]:
                index1 = str1.index("=")
                int1 = reverse( str1[-2:index1:-1])
                sumPerf = sumPerf + int(int1)
        print "-->%s - Use Time(usec): %d    " %(fileName,sumPerf)

        f.close()
        return sumPerf


5.配置XMl文件




        a='''<?xml version="1.0" encoding="UTF-8"?>
<dba-test-parse-sql>
                <!-- 是否写到屏幕或文件 -->
                <is-write-to-screen>true</is-write-to-screen>
                <is-write-to-file>true</is-write-to-file>
                <!-- xml中数据执行次数 -->
                <execution-number>5</execution-number>
                <!-- 数据库配置 -->
                <db-config>
                                <db-server>127.0.0.1</db-server>
                                <db-port>3306</db-port>
                                <db-user>egilance</db-user>
                                <db-pwd>egilance1234</db-pwd>
                                <db-name>test</db-name>
                                <!-- 数据库要执行的语句 -->
                                <exec-sql>select sqlcontent from sqlcontent_table</exec-sql>
                </db-config>
</dba-test-parse-sql>'''
        
    

        #设置元素值
        r = ElementTree.fromstring(a)

        for ele in r.getiterator():
                if ele.tag == "is-write-to-screen":
                         ele.text = wScreen
                if ele.tag == "is-write-to-file":
                         ele.text = wFile
                if ele.tag == "execution-number":
                         ele.text = exeNum
                if ele.tag == "db-server":
                         ele.text = DBServerIP
                if ele.tag == "db-port":
                         ele.text = DBPort
                if ele.tag == "db-user":
                         ele.text = DBUserName
                if ele.tag == "db-pwd":
                         ele.text = DBPWD
                if ele.tag == "db-name":
                         ele.text = DBName
                if ele.tag == "exec-sql":
                         ele.text = "select sqlcontent from %s where record_id = %s" %( DBtableName ,i+1)


        #保存到文件
        n = ElementTree.ElementTree()
        n._setroot(r)
        n.write(r'/var/aoc/analyzer/conf/dba-test-parse-sql.xml',"utf-8")

6.MySQL数据库连接



#验证数据库配置
DBServerIP ="127.0.0.1"
DBPort ="3306"
DBUserName = "root"
DBPWD = "root"
DBName ="test"



while 1:
                        DBtableName =raw_input("--> Please enter table name \n:")
                        try:
                                        conn = MySQLdb.connect(host=DBServerIP ,user=DBUserName ,passwd=DBPWD ,db=DBName ,port=int(DBPort))
                                        cur=conn.cursor()
                                        sqlstr = "select MAX(record_id) from %s" %DBtableName
                                        cur.execute(sqlstr)
                                        maxid = cur.fetchone()
                                        maxid2 =int(maxid[0])
                                        cur.close()
                                        conn.close()
                                        break
                        except MySQLdb.Error,e:
                                        print "Mysql Error %d: %s" % (e.args[0], e.args[1])


这个只是个思路,很多地方需要优化,简化,先把各个功能写在这里做个记录,有空时再优化下

你可能感兴趣的:(数据库,数据库系统脚本)