Edit

kc3-lang/libxml2/doc/queries.py

Branch :

  • Show log

    Commit

  • Author : Daniel Veillard
    Date : 2004-04-08 14:41:42
    Hash : 9955d2b4
    Message : The python script to grab queries stats, daniel

  • doc/queries.py
  • #!/usr/bin/python -u
    #
    # Processing of the queries results
    #
    import sys
    import index
    import time
    import traceback
    import string
    
    if index.openMySQL(verbose = 0) < 0:
        print "Failed to connect to the MySQL database"
        sys.exit(1)
    
    DB = index.DB
    
    def getTopQueriesDB(base = "Queries", number = 50):
        global DB
    
        try:
            import os
    	os.mkdir("searches")
        except:
            pass
        
        date = time.strftime("%Y%m%d")
        f = open("searches/%s-%s.xml" % (base, date), "w")
        c = DB.cursor()
        try:
            ret = c.execute("""select sum(Count) from %s""" % (base))
    	row = c.fetchone()
    	total = int(row[0])
            ret = c.execute("""select count(*) from %s""" % (base))
    	row = c.fetchone()
    	uniq = int(row[0])
            ret = c.execute(
               """select * from %s ORDER BY Count DESC LIMIT %d""" % (base, number))
    	i = 0;
    	f.write("<queries total='%d' uniq='%d' nr='%d' date='%s'>\n" % (
    	      total, uniq, number, date))
    	while i < ret:
    	    row = c.fetchone()
    	    f.write("  <query count='%d'>%s</query>\n" % (int(row[2]), row[1]))
    	    i = i + 1
    	f.write("</queries>\n")
        except:
            print "getTopQueries %s %d failed\n" % (base, number)
    	print sys.exc_type, sys.exc_value
    	return -1
        f.close()
    
    def getTopQueries(number = 50):
        return getTopQueriesDB(base = "Queries", number = number)
    
    def getAllTopQueries(number = 50):
        return getTopQueriesDB(base = "AllQueries", number = number)
    
    def increaseTotalCount(Value, count):
        global DB
    
        c = DB.cursor()
        try:
            ret = c.execute("""select ID,Count from AllQueries where Value='%s'""" %
    	                (Value))
    	row = c.fetchone()
    	id = row[0]
    	cnt = int(row[1]) + count
    	ret = c.execute("""UPDATE AllQueries SET Count = %d where ID = %d""" %
    	                (cnt, id))
        except:
            ret = c.execute(
    	"""INSERT INTO AllQueries (Value, Count) VALUES ('%s', %d)""" %
    	                (Value, count))
        
    
    def checkString(str):
        if string.find(str, "'") != -1 or \
           string.find(str, '"') != -1 or \
           string.find(str, "\\") != -1 or \
           string.find(str, " ") != -1 or \
           string.find(str, "\t") != -1 or \
           string.find(str, "\n") != -1 or \
           string.find(str, "\r") != -1:
            return 0
        return 1
    def addCounts(frmtable):
        global DB
    
        i = 0
        c = DB.cursor()
        entries=[]
        try:
            ret = c.execute("""select Value,Count from %s""" % (frmtable))
    	while i < ret:
    	    i = i + 1
    	    row = c.fetchone()
    	    if checkString(row[0]):
    		entries.append((row[0], int(row[1])))
    	    else:
    		entries.append((None, int(row[1])))
    	
    	for row in entries:
    	    if row[0] != None:
    		increaseTotalCount(row[0], row[1])
        except:
            print "addCounts %s failed" % (frmtable)
    	print sys.exc_type, sys.exc_value
    	traceback.print_exc(file=sys.stdout)
            
        try:
    	c.execute("""DELETE from %s""" % (frmtable))
        except:
    	pass
    
    
        
    getTopQueries()
    addCounts('Queries')
    getAllTopQueries()