Browse Source

First pass at bottle

seanaedmiston 12 years ago
parent
commit
00528c8238
2 changed files with 44 additions and 19 deletions
  1. 43 18
      bottle/app.py
  2. 1 1
      installer.py

+ 43 - 18
bottle/app.py

@@ -1,24 +1,22 @@
-from bottle import route, run, template
-
-@route('/hello/:name')
-def index(name='World'):
-    return template('<b>Hello {{name}}</b>!', name=name)
-
-
-
-from flask import Flask, jsonify, request
-from flask.ext.sqlalchemy import SQLAlchemy
+from bottle import Bottle, route, request, run
+from bottle.ext import sqlalchemy 
+from sqlalchemy import create_engine
+from sqlalchemy.ext.declarative import declarative_base
 from random import randint
 
-app = Flask(__name__)
+app = Bottle()
 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world'
-db = SQLAlchemy(app)
+Base = declarative_base()
+db_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
+plugin = sqlalchemy.Plugin(db_engine, keyword='db', )
+app.install(plugin)
+
 
 class World(db.Model):
   __tablename__ = "World"
   id = db.Column(db.Integer, primary_key=True)
   randomNumber = db.Column(db.Integer)
-  
+
   # http://stackoverflow.com/questions/7102754/jsonify-a-sqlalchemy-result-set-in-flask
   @property
   def serialize(self):
@@ -28,19 +26,46 @@ class World(db.Model):
          'randomNumber': self.randomNumber
      }
 
-@route("/json")
+@app.route("/json")
 def hello():
   resp = {"message": "Hello, World!"}
   return jsonify(resp)
 
-@route("/db")
-def get_random_world():
-  num_queries = request.args.get("queries", 1)
+@app.route("/db")
+def get_random_world(db):
+  num_queries = request.query.queries or '1'
   worlds = []
   for i in range(int(num_queries)):
     wid = randint(1, 10000)
     worlds.append(World.query.get(wid).serialize)
   return jsonify(worlds=worlds)
+
[email protected]("/dbs")
+def get_random_world_single(db):
+  wid = randint(1, 10000)
+  worlds = [World.query.get(wid).serialize]
+  return jsonify(worlds=worlds)
   
[email protected]("/dbraw")
+def get_random_world_raw():
+  connection = db_engine.connect()
+  num_queries = request.query.queries or '1'
+  worlds = []
+  for i in range(int(num_queries)):
+    wid = randint(1, 10000)
+    result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
+    worlds.append({'id': result[0], 'randomNumber': result[1]})
+  connection.close()
+  return jsonify(worlds=worlds)
+
[email protected]("/dbsraw")
+def get_random_world_single_raw():
+  connection = db_engine.connect()
+  wid = randint(1, 10000)
+  result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
+  worlds = [{'id': result[0], 'randomNumber': result[1]}]
+  connection.close()
+  return jsonify(worlds=worlds)
+
 if __name__ == "__main__":
-    run()
+    app.run()

+ 1 - 1
installer.py

@@ -253,7 +253,7 @@ class Installer:
     ##############################
     # Bottle
     ##############################
-    self.__run_command("sudo pip install bottle")
+    self.__run_command("sudo pip install bottle bottle-sqlalchemy")
 
     ##############################
     # Play 2