zoukankan      html  css  js  c++  java
  • 4.5 团队作业1(后台数据操作)

    经过将近一周的时间,弄这个,一直在尝试各种方法,写了删、删了写,反复修改。终于可以正常的返回数据

    看后台代码

    app.py

    import utils
    from flask import Flask
    from flask import request
    from flask import render_template
    from flask import jsonify
    import string
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return render_template("main.html")
    
    
    @app.route("/c1")
    def get_c1_data():
        data = utils.get_c1_data()
        return jsonify({"confirm":data[0],"suspect":data[1],"heal":data[2],"dead":data[3]})
    
    
    @app.route("/c2")
    def get_c2_data():
        res = []
        for tup in utils.get_c2_data():
            # print(tup)
            res.append({"name":tup[0],"value":int(tup[1])})
        return jsonify({"data":res})
    
    
    @app.route("/l1")
    def get_l1_data():
        data = utils.get_l1_data()
        day,confirm,suspect,heal,dead = [],[],[],[],[]
        for a,b,c,d,e in data[7:]:
            day.append(a.strftime("%m-%d"))
            #  a是datatime类型
            confirm.append(b)
            suspect.append(c)
            heal.append(d)
            dead.append(e)
        return jsonify({"day": day, "confirm": confirm, "suspect": suspect, "heal": heal, "dead": dead})
    
    
    @app.route("/l2")
    def get_l2_data():
        data = utils.get_l2_data()
        day, confirm_add, suspect_add = [], [], []
        for a, b, c in data[7:]:
            day.append(a.strftime("%m-%d"))  # a是datatime类型
            confirm_add.append(b)
            suspect_add.append(c)
        return jsonify({"day": day, "confirm_add": confirm_add, "suspect_add": suspect_add})
    
    
    @app.route("/r1")
    def get_r1_data():
        data = utils.get_r1_data()
        city = []
        confirm = []
        for k,v in data:
            city.append(k)
            confirm.append(int(v))
        return jsonify({"city": city, "confirm": confirm})
    
    
    @app.route("/r2")
    def get_r2_data():
        res = []
        for tup in utils.get_r2_data():
            # print(tup)
            res.append({"name": tup[0], "value": int(tup[1])})
        return jsonify({"data": res})
    
    
    @app.route("/time")
    def get_time():
        return utils.get_time()
    
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1', port=5000)

    utils.py

    import time
    import pymysql
    from decimal import Decimal
    import json
    def get_time():
        time_str = time.strftime("%Y{}%m{}%d{} %X")
        return time_str.format("", "", "")
    
    
    def get_conn():
        """
        :return: 连接,游标
        """
        # 创建连接
        conn = pymysql.connect(host="localhost",
                               user="root",
                               password="root1",
                               db="cov",
                               charset="utf8")
        # 创建游标
        cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
        return conn, cursor
    
    
    def close_conn(conn, cursor):
        cursor.close()
        conn.close()
    
    
    def query(sql, *args):
        """
        封装通用查询
        :param sql:
        :param args:
        :return: 返回查询到的结果,((),(),)的形式
        """
        conn, cursor = get_conn()
        cursor.execute(sql, args)
        res = cursor.fetchall()
        close_conn(conn, cursor)
        return res
    
    
    def get_c1_data():
        """
        :return: 返回大屏div id=c1 的数据
        """
        # 因为会更新多次数据,取时间戳最新的那组数据
        sql = "select sum(confirm)," 
              "(select suspect from history order by ds desc limit 1)," 
              "sum(heal)," 
              "sum(dead) " 
              "from details " 
              "where update_time=(select update_time from details order by update_time desc limit 1) "
        res = query(sql)
    
        res_list = [str(i) for i in res[0]]
        res_tuple=tuple(res_list)
        return res_tuple
    
    
    def get_c2_data():
        """
        :return:  返回各省数据
        """
        # 因为会更新多次数据,取时间戳最新的那组数据
        sql = "select province,sum(confirm) from details " 
              "where update_time=(select update_time from details " 
              "order by update_time desc limit 1) " 
              "group by province"
        res = query(sql)
        return res
    
    
    def get_l1_data():
        sql = "select ds,confirm,suspect,heal,dead from history"
        res = query(sql)
        return res
    
    
    def get_l2_data():
        sql = "select ds,confirm_add,suspect_add from history"
        res = query(sql)
        return res
    
    
    def get_r1_data():
        """
        :return:  返回非湖北地区城市确诊人数前5名
        """
        sql = 'SELECT province,confirm_add FROM ' 
              '(select province,sum(confirm_add) as confirm_add from details  ' 
              'where update_time=(select update_time from details order by update_time desc limit 1) ' 
              'group by province) as a ' 
              'ORDER BY confirm_add DESC LIMIT 5'
        res = query(sql)
        return res
    
    
    def get_r2_data():
        '''
            获取世界各国的疫情数据
            :return:
        '''
        # 因为会更新多次数据,取时间戳最新的那组数据
        sql = "select province,sum(confirm_add) from details " 
              "where update_time=(select update_time from details " 
              "order by update_time desc limit 1) " 
              "group by province"
        res = query(sql)
        return res
    
    if __name__ == "__main__":
        print(get_c1_data())
  • 相关阅读:
    插入排序(JS代码)
    选择排序(JS代码)
    快速排序(JS代码)
    冒泡排序(js代码)
    《CSS揭秘》--推荐指数⭐⭐⭐⭐⭐
    CSS中position的定位
    逆转录转座子初窥
    django开发傻瓜教程-1-安装和HelloWorld
    爬虫教程-1
    算法_NP_证明
  • 原文地址:https://www.cnblogs.com/cdl-sunshine/p/14907703.html
Copyright © 2011-2022 走看看