app.py 2.1 KB

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