Author: cornmander
Date: Sun May 10 07:24:04 2009
New Revision: 35523

URL: http://svn.gna.org/viewcvs/wesnoth?rev=35523&view=rev
Log:
finished subsample code, this will be put into a nightly cronjob to generate 
100,000 and 1,000,000 row subsamples of main GAMES table


Added:
    website/stats.wesnoth.org/wesstats/dbsample.py   (contents, props changed)
      - copied, changed from r35480, website/stats.wesnoth.org/dbsample.py
Removed:
    website/stats.wesnoth.org/dbsample.py
Modified:
    website/stats.wesnoth.org/devdata.sqlite

Removed: website/stats.wesnoth.org/dbsample.py
URL: 
http://svn.gna.org/viewcvs/wesnoth/website/stats.wesnoth.org/dbsample.py?rev=35522&view=auto
==============================================================================
--- website/stats.wesnoth.org/dbsample.py (original)
+++ website/stats.wesnoth.org/dbsample.py (removed)
@@ -1,71 +1,0 @@
-# $Id$
-"""
-   Copyright (C) 2009 by Gregory Shikhman <[email protected]>
-   Part of the Battle for Wesnoth Project http://www.wesnoth.org/
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2
-   or at your option any later version.
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY.
-
-   See the COPYING file for more details.
-"""
-
-import MySQLdb
-import random
-
-import configuration
-
-TBLSTRING = "SMPL"
-
-def sample(size):
-       conn = 
MySQLdb.connect(configuration.DB_HOSTNAME,configuration.DB_USERNAME,configuration.DB_PASSWORD,configuration.DB_NAME)
-       curs = conn.cursor()
-
-       #find the maximum game_id in the DB
-       curs.execute("SELECT MAX(game_id) FROM GAMES")
-       results = curs.fetchall()
-       max_id = results[0][0]
-
-       #look for an existing table with this sample size and drop it if it 
exists, then create a new one
-       tblname = configuration.DB_TABLE_PREFIX+TBLSTRING+str(size)
-       curs.execute("SELECT count(*) FROM information_schema.tables WHERE 
table_schema = 'corn' AND table_name = '"+tblname+"'")
-       results = curs.fetchall()
-       exists = results[0][0] == 1
-       if exists:
-               curs.execute("DROP TABLE IF EXISTS "+tblname)
-       curs.execute("""
-       CREATE TABLE `"""+tblname+"""` (
-         `game_id` int(11) NOT NULL auto_increment,
-         `timestamp` datetime NOT NULL,
-         `user_id` char(14) NOT NULL,
-         `serial` char(18) NOT NULL,
-         `platform` char(8) default NULL,
-         `version` char(14) default NULL,
-         `campaign` char(40) default NULL,
-         `difficulty` char(20) default NULL,
-         `gold` int(11) default NULL,
-         `turns` int(11) default NULL,
-         `scenario` char(40) default NULL,
-         `start_turn` int(11) default NULL,
-         `time` int(11) default NULL,
-         `result` enum('victory','defeat','quit') default NULL,
-         `end_time` int(11) default NULL,
-         `end_gold` int(11) default NULL,
-         `end_turn` int(11) default NULL,
-         PRIMARY KEY  (`game_id`)
-       ) ENGINE=MyISAM AUTO_INCREMENT=2450740 DEFAULT CHARSET=utf8 """)
-       
-       #randomly pick size number of entries from the main DB and put them 
into this sample
-       choices = random.sample(range(1,max_id),size)
-       for c in choices:
-               curs.execute("SELECT * FROM GAMES WHERE `game_id`=%s",c)
-               results = curs.fetchall()
-               if len(results) != 0:
-                       #print results[0]
-                       curs.execute("""INSERT INTO %s 
(game_id,timestamp,user_id,serial,platform,version,
-                               
campaign,difficulty,gold,turns,scenario,start_turn,time,result,end_time,end_gold,end_turn)
 VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""",results[0])
-       conn.close()
-
-sample(100000)

Modified: website/stats.wesnoth.org/devdata.sqlite
URL: 
http://svn.gna.org/viewcvs/wesnoth/website/stats.wesnoth.org/devdata.sqlite?rev=35523&r1=35522&r2=35523&view=diff
==============================================================================
Binary files - no diff available.

Copied: website/stats.wesnoth.org/wesstats/dbsample.py (from r35480, 
website/stats.wesnoth.org/dbsample.py)
URL: 
http://svn.gna.org/viewcvs/wesnoth/website/stats.wesnoth.org/wesstats/dbsample.py?p2=website/stats.wesnoth.org/wesstats/dbsample.py&p1=website/stats.wesnoth.org/dbsample.py&r1=35480&r2=35523&rev=35523&view=diff
==============================================================================
--- website/stats.wesnoth.org/dbsample.py (original)
+++ website/stats.wesnoth.org/wesstats/dbsample.py Sun May 10 07:24:04 2009
@@ -30,42 +30,18 @@
 
        #look for an existing table with this sample size and drop it if it 
exists, then create a new one
        tblname = configuration.DB_TABLE_PREFIX+TBLSTRING+str(size)
-       curs.execute("SELECT count(*) FROM information_schema.tables WHERE 
table_schema = 'corn' AND table_name = '"+tblname+"'")
+       curs.execute("SELECT count(*) FROM information_schema.tables WHERE 
table_schema = 'corn' AND table_name = %s",(tblname,))
        results = curs.fetchall()
        exists = results[0][0] == 1
        if exists:
                curs.execute("DROP TABLE IF EXISTS "+tblname)
-       curs.execute("""
-       CREATE TABLE `"""+tblname+"""` (
-         `game_id` int(11) NOT NULL auto_increment,
-         `timestamp` datetime NOT NULL,
-         `user_id` char(14) NOT NULL,
-         `serial` char(18) NOT NULL,
-         `platform` char(8) default NULL,
-         `version` char(14) default NULL,
-         `campaign` char(40) default NULL,
-         `difficulty` char(20) default NULL,
-         `gold` int(11) default NULL,
-         `turns` int(11) default NULL,
-         `scenario` char(40) default NULL,
-         `start_turn` int(11) default NULL,
-         `time` int(11) default NULL,
-         `result` enum('victory','defeat','quit') default NULL,
-         `end_time` int(11) default NULL,
-         `end_gold` int(11) default NULL,
-         `end_turn` int(11) default NULL,
-         PRIMARY KEY  (`game_id`)
-       ) ENGINE=MyISAM AUTO_INCREMENT=2450740 DEFAULT CHARSET=utf8 """)
+       curs.execute("CREATE TABLE "+tblname+" LIKE GAMES")
        
        #randomly pick size number of entries from the main DB and put them 
into this sample
        choices = random.sample(range(1,max_id),size)
        for c in choices:
-               curs.execute("SELECT * FROM GAMES WHERE `game_id`=%s",c)
-               results = curs.fetchall()
-               if len(results) != 0:
-                       #print results[0]
-                       curs.execute("""INSERT INTO %s 
(game_id,timestamp,user_id,serial,platform,version,
-                               
campaign,difficulty,gold,turns,scenario,start_turn,time,result,end_time,end_gold,end_turn)
 VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""",results[0])
+               curs.execute("INSERT INTO "+tblname+" SELECT * FROM GAMES WHERE 
`game_id`=%s",c)
        conn.close()
 
-sample(100000)
+sample(10**6) #1 mil row subsample
+sample(10**5) #100k row subsample

Propchange: website/stats.wesnoth.org/wesstats/dbsample.py
------------------------------------------------------------------------------
    svn:mergeinfo = 


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to