diff --git a/requirements.txt b/requirements.txt index aa824e6..02793f5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -falcon==1.4.1 -gunicorn==19.9.0 +falcon +gunicorn sqlalchemy diff --git a/server.py b/server.py index 93b045d..f62fcaa 100644 --- a/server.py +++ b/server.py @@ -1,26 +1,27 @@ +#!/usr/bin/env python3 import falcon import sqlalchemy import json -import sys -import datetime +from sqlalchemy import text import os db_url = os.environ[ 'DB_CONNECTION' ] if 'DB_CONNECTION' in os.environ else 'postgresql://postgres@localhost/postgres' eng = sqlalchemy.create_engine(db_url, pool_recycle=3600) conn = eng.connect() -print "Connected to db" +print("Connected to db") class QResource: def on_get(self, req, resp): """Handles GET requests""" sql = req.params['q'] - result = conn.execute(sql) - data = [(dict(row.items())) for row in result] + result = conn.execute(text(sql)) + # __import__('ipdb').set_trace() + data = [row._asdict() for row in result] resp.set_header('Access-Control-Allow-Origin', '*') resp.set_header('Access-Control-Allow-Headers', 'Content-Type,Authorization') resp.set_header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS') resp.set_header('content-type', 'application/json; charset=UTF-8') - resp.body = json.dumps( data, default=str ) + resp.text = json.dumps( data, default=str ) class RedirectingResource: @@ -31,3 +32,11 @@ api = falcon.API() api.add_route('/', RedirectingResource()) api.add_static_route('/', os.path.dirname(os.path.realpath(__file__)) + '/static' ) api.add_route('/api/data', QResource()) + + +if __name__ == '__main__': + from wsgiref.simple_server import make_server + with make_server('', 8000, api) as httpd: + print('Serving on port 8000...') + # Serve until process is killed + httpd.serve_forever()