app.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from flask import Flask, jsonify, request
  2. from flask.ext.sqlalchemy import SQLAlchemy
  3. from sqlalchemy import create_engine
  4. from random import randint
  5. app = Flask(__name__)
  6. app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world'
  7. db = SQLAlchemy(app)
  8. dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
  9. class World(db.Model):
  10. __tablename__ = "World"
  11. id = db.Column(db.Integer, primary_key=True)
  12. randomNumber = db.Column(db.Integer)
  13. # http://stackoverflow.com/questions/7102754/jsonify-a-sqlalchemy-result-set-in-flask
  14. @property
  15. def serialize(self):
  16. """Return object data in easily serializeable format"""
  17. return {
  18. 'id' : self.id,
  19. 'randomNumber': self.randomNumber
  20. }
  21. @app.route("/json")
  22. def hello():
  23. resp = {"message": "Hello, World!"}
  24. return jsonify(resp)
  25. @app.route("/db")
  26. def get_random_world():
  27. num_queries = request.args.get("queries", 1)
  28. worlds = []
  29. for i in range(int(num_queries)):
  30. wid = randint(1, 10000)
  31. worlds.append(World.query.get(wid).serialize)
  32. return jsonify(worlds=worlds)
  33. @app.route("/dbs")
  34. def get_random_world_single():
  35. wid = randint(1, 10000)
  36. worlds = [World.query.get(wid).serialize]
  37. return jsonify(worlds=worlds)
  38. @app.route("/dbraw")
  39. def get_random_world_raw():
  40. connection = dbraw_engine.connect()
  41. num_queries = request.args.get("queries", 1)
  42. worlds = []
  43. for i in range(int(num_queries)):
  44. wid = randint(1, 10000)
  45. result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
  46. worlds.append({'id': result[0], 'randomNumber': result[1]})
  47. connection.close()
  48. return jsonify(worlds=worlds)
  49. @app.route("/dbsraw")
  50. def get_random_world_single_raw():
  51. connection = dbraw_engine.connect()
  52. wid = randint(1, 10000)
  53. result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
  54. worlds = [{'id': result[0], 'randomNumber': result[1]}]
  55. connection.close()
  56. return jsonify(worlds=worlds)
  57. if __name__ == "__main__":
  58. app.run()