aboutsummaryrefslogtreecommitdiff
path: root/wqflask/db
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/db')
-rw-r--r--wqflask/db/__init__.py0
-rw-r--r--wqflask/db/call.py62
-rw-r--r--wqflask/db/gn_server.py9
-rw-r--r--wqflask/db/webqtlDatabaseFunction.py54
4 files changed, 125 insertions, 0 deletions
diff --git a/wqflask/db/__init__.py b/wqflask/db/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/wqflask/db/__init__.py
diff --git a/wqflask/db/call.py b/wqflask/db/call.py
new file mode 100644
index 00000000..194a7650
--- /dev/null
+++ b/wqflask/db/call.py
@@ -0,0 +1,62 @@
+# Module for calling the backend
+
+from flask import g
+
+import string
+import urllib2
+import json
+from utility.tools import USE_GN_SERVER, LOG_SQL, GN_SERVER_URL
+from utility.benchmark import Bench
+
+from utility.logger import getLogger
+logger = getLogger(__name__ )
+
+# from inspect import stack
+
+def fetch1(query, path=None, func=None):
+ """Fetch one result using either a SQL query or the URI path to
+GN_SERVER (when USE_GN_SERVER is True). Apply func to GN_SERVER result
+when set.
+
+ """
+ if USE_GN_SERVER and path:
+ result = gn_server(path)
+ if func != None:
+ return [func(result)]
+ else:
+ return [result]
+ else:
+ return fetchone(query)
+
+def fetchone(query):
+ """Return tuple containing one row by calling SQL directly (the
+original fetchone, but with logging)
+
+ """
+ with Bench("SQL",LOG_SQL):
+ def helper(query):
+ res = g.db.execute(query)
+ return res.fetchone()
+ return logger.sql(query, helper)
+
+def fetchall(query):
+ """Return row iterator by calling SQL directly (the
+original fetchall, but with logging)
+
+ """
+ with Bench("SQL",LOG_SQL):
+ def helper(query):
+ res = g.db.execute(query)
+ return res.fetchall()
+ return logger.sql(query, helper)
+
+def gn_server(path):
+ """Return JSON record by calling GN_SERVER
+
+ """
+ with Bench("GN_SERVER",LOG_SQL):
+ res = urllib2.urlopen(GN_SERVER_URL+path)
+ rest = res.read()
+ res2 = json.loads(rest)
+ logger.debug(res2)
+ return res2
diff --git a/wqflask/db/gn_server.py b/wqflask/db/gn_server.py
new file mode 100644
index 00000000..da224112
--- /dev/null
+++ b/wqflask/db/gn_server.py
@@ -0,0 +1,9 @@
+# Backend query functions (logic)
+
+from db.call import gn_server
+
+from utility.logger import getLogger
+logger = getLogger(__name__ )
+
+def menu_main():
+ return gn_server("/int/menu/main.json")
diff --git a/wqflask/db/webqtlDatabaseFunction.py b/wqflask/db/webqtlDatabaseFunction.py
new file mode 100644
index 00000000..7fc096a9
--- /dev/null
+++ b/wqflask/db/webqtlDatabaseFunction.py
@@ -0,0 +1,54 @@
+# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU Affero General Public License for more details.
+#
+# This program is available from Source Forge: at GeneNetwork Project
+# (sourceforge.net/projects/genenetwork/).
+#
+# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
+# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
+#
+#
+#
+# This module is used by GeneNetwork project (www.genenetwork.org)
+
+from db.call import fetch1
+
+from utility.logger import getLogger
+logger = getLogger(__name__ )
+
+###########################################################################
+#output: cursor instance
+#function: connect to database and return cursor instance
+###########################################################################
+def getCursor():
+ try:
+ logger.warning("Creating new MySQLdb cursor (this method is OBSOLETE!)")
+ con = MySQLdb.Connect(db=webqtlConfig.DB_NAME, host=webqtlConfig.MYSQL_SERVER, user=webqtlConfig.DB_USER, passwd=webqtlConfig.DB_PASSWD)
+ cursor = con.cursor()
+ return cursor
+ except:
+ return None
+
+def retrieve_species(group):
+ """Get the species of a group (e.g. returns string "mouse" on "BXD"
+
+ """
+ result = fetch1("select Species.Name from Species, InbredSet where InbredSet.Name = '%s' and InbredSet.SpeciesId = Species.Id" % (group),"/cross/"+group+".json",lambda r: r["species"])[0]
+ logger.debug("retrieve_species result:",result)
+ return result
+
+
+def retrieve_species_id(group):
+
+ result = fetch1("select SpeciesId from InbredSet where Name = '%s'" % (group),"/cross/"+group+".json",lambda r: r["species_id"])[0]
+ logger.debug("retrieve_species_id result:",result)
+ return result