aboutsummaryrefslogtreecommitdiff
path: root/wqflask/db/call.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/db/call.py')
-rw-r--r--wqflask/db/call.py62
1 files changed, 62 insertions, 0 deletions
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