app.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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:[email protected]: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. worlds = []
  36. wid = randint(1, 10000)
  37. worlds.append(World.query.get(wid).serialize)
  38. return jsonify(worlds=worlds)
  39. @app.route("/dbraw")
  40. def get_random_world_raw():
  41. connection = dbraw_engine.connect()
  42. num_queries = request.args.get("queries", 1)
  43. worlds = []
  44. for i in range(int(num_queries)):
  45. wid = randint(1, 10000)
  46. result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
  47. worlds.append({'id': result[0], 'randomNumber': result[1]})
  48. connection.close()
  49. return jsonify(worlds=worlds)
  50. @app.route("/dbsraw")
  51. def get_random_world_single_raw():
  52. connection = dbraw_engine.connect()
  53. worlds = []
  54. wid = randint(1, 10000)
  55. result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
  56. worlds.append({'id': result[0], 'randomNumber': result[1]})
  57. connection.close()
  58. return jsonify(worlds=worlds)
  59. if __name__ == "__main__":
  60. app.run()