diff py/setupdb.py @ 0:5ba2123d2c20

Put this project under version control, finally. Scripts for rlgallery.org, using a PostgreSQL backend. The recorder system is in py/, CGI scripts are in web/.
author John "Elwin" Edwards <elwin@sdf.org>
date Wed, 25 Jul 2012 21:59:42 -0700
parents
children e8f3b7994d88
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/py/setupdb.py	Wed Jul 25 21:59:42 2012 -0700
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# setupdb.py: initializes the database tables used by the rlg system.
+
+import rlgalldb as rlgall
+import psycopg2
+
+webuser = "webserver"
+allowquery = "GRANT SELECT ON {0} TO " + webuser + ";"
+
+dbconn = psycopg2.connect("dbname=rlg")
+dbcur = dbconn.cursor()
+
+dbcur.execute("CREATE TABLE games ( gname varchar(20), offbytes int );")
+dbcur.execute("CREATE TABLE players (pname varchar(20) PRIMARY KEY);")
+dbconn.commit()
+
+for game in rlgall.gamelist:
+  dbcur.execute("INSERT INTO games VALUES (%s, %s);", (game.uname, 0))
+
+  createquery = "CREATE TABLE " + game.uname + " ( "
+  for i, field in enumerate(game.sqltypes.keys()):
+    createquery += "{0} {1}".format(field, game.sqltypes[field])
+    if field == "name":
+      createquery += " REFERENCES players(pname)"
+    if i == len(game.sqltypes) - 1:
+      createquery += " )"
+    else:
+      createquery += ", "
+  createquery += ";"
+  #print createquery
+  dbcur.execute(createquery)
+  dbcur.execute(allowquery.format(game.uname))
+  dbconn.commit()
+
+dbcur.close()
+dbconn.close()
+exit()