app.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from flask import Flask, render_template, jsonify
  2. from datetime import datetime
  3. from sqlalchemy import create_engine,func
  4. from sqlalchemy.orm import sessionmaker
  5. from Coin import Coin, CoinMarketPosition
  6. app = Flask(__name__)
  7. engine = create_engine('sqlite:///coins.db', echo=False, connect_args={'check_same_thread':False})
  8. # create a Session
  9. Session = sessionmaker(bind=engine)
  10. session = Session()
  11. def result50(date=datetime.now()):
  12. result = []
  13. for x in session.query(CoinMarketPosition,Coin).filter(func.Date(CoinMarketPosition.date) == date.date()).distinct(Coin.id).join(Coin).order_by(CoinMarketPosition.market_caps.desc()).limit(50).all():
  14. result.append((x[1].symbol, x[0].market_caps))
  15. return result
  16. @app.route("/")
  17. @app.route('/top50async/<date>/')
  18. def top50async(date="2020-01-12"):
  19. delta = datetime.now() - datetime(2014,1,1)
  20. return render_template('async_list.html', date=date, rangeDate=delta.days )
  21. @app.route('/top50json/<date>/')
  22. def top50json(date):
  23. d = datetime.strptime(date, "%d-%m-%Y")
  24. results = result50(d)
  25. arr = [{'name':x[0],'marketCap':x[1]} for x in results]
  26. return jsonify(arr)
  27. @app.route('/coin/<id>/')
  28. def coinHistory(id):
  29. results = session.query(CoinMarketPosition).filter(CoinMarketPosition.coin_id==id).all()
  30. return jsonify([ {'date':marketPos.date,'marketCap':marketPos.market_caps} for marketPos in results])
  31. if __name__ == '__main__':
  32. app.run(debug=True)