diff options
Diffstat (limited to 'doc/queries.py')
-rwxr-xr-x | doc/queries.py | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/doc/queries.py b/doc/queries.py new file mode 100755 index 0000000..0f019ec --- /dev/null +++ b/doc/queries.py @@ -0,0 +1,119 @@ +#!/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() |