about summary refs log tree commit diff
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