Skip to content

Instantly share code, notes, and snippets.

@nad2000
Last active November 7, 2015 08:36
Show Gist options
  • Save nad2000/79c3377a5e35d6bd7c7c to your computer and use it in GitHub Desktop.
Save nad2000/79c3377a5e35d6bd7c7c to your computer and use it in GitHub Desktop.
Simple REST server that fetches data from DB:
from werkzeug.wrappers import Request, Response
import sqlite3
import json
from pprint import pprint
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
@Request.application
def application(request):
db = sqlite3.connect("app.db")
db.row_factory = dict_factory
if request.method == "POST":
new_rule = json.loads(request.data).get("newRule")
if new_rule:
db.execute("INSERT INTO rules (rule_name) VALUES (?)",
(new_rule,))
db.commit()
data = db.execute("SELECT * FROM rules").fetchall()
res = Response(json.dumps(data))
res.headers.add('Access-Control-Allow-Origin', '*')
res.headers.add('Access-Control-Allow-Methods',
'GET,PUT,POST,DELETE,PATCH')
res.headers.add('Access-Control-Allow-Headers',
'Content-Type, Authorization')
return res
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, application, use_reloader=True)
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE rules( id integer primary key AUTOINCREMENT, rule_name text);
INSERT INTO "rules" VALUES(1,'Must be 5 characters');
INSERT INTO "rules" VALUES(2,'Must not be used elsewhere');
INSERT INTO "rules" VALUES(3,'Must be cool');
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES('rules',3);
COMMIT;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment