from flask import Flask, render_template, jsonify from datetime import datetime from sqlalchemy import create_engine,func from sqlalchemy.orm import sessionmaker from Coin import Coin, CoinMarketPosition app = Flask(__name__) engine = create_engine('sqlite:///coins.db', echo=False, connect_args={'check_same_thread':False}) # create a Session Session = sessionmaker(bind=engine) session = Session() def result50(date=datetime.now()): result = [] 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(): result.append((x[1].symbol, x[0].market_caps)) return result @app.route("/") @app.route('/top50async//') def top50async(date="2020-01-12"): return render_template('async_list.html', date=date) @app.route('/top50json//') def top50json(date): d = datetime.strptime(date, "%d-%m-%Y") results = result50(d) arr = [{'name':x[0],'marketCap':x[1]} for x in results] return jsonify(arr) @app.route('/coin//') def coinHistory(id): results = session.query(CoinMarketPosition).filter(CoinMarketPosition.coin_id==id).all() return jsonify([ {'date':marketPos.date,'marketCap':marketPos.market_caps} for marketPos in results]) if __name__ == '__main__': app.run(debug=True)