Предоставьте записи суммы за период с сегодняшнего дня по последние 15 дней на Python с помощью Flask/MySQL

#python #sql #flask

Вопрос:

Предполагается, что у меня есть некоторые примеры данных, table_x как показано ниже:

     code_x   code_y      val         end_date
   -------------------------------------------
1   00001    111         500         20210301
2   00002    222         1000        20210301
3   00003    333         200         20210301
4   00004    444         400         20210301
.....
59999 59999   888        200         20210311
60000 60000   999       400          20210312
 

Я хотел бы разработать внутренний интерфейс для подсчета общего счетчика в течение 15 дней и 7 дней с помощью Python Flask и предоставить результат на интерфейсные страницы , нужно ли передавать параметр в front_end?

 class GetTableX(Resource):

    Get_Table_X = reqparse.RequestParser()
    Get_Table_X.add_argument("end_date", type=str, required=False)  # Do I need to pass parameter to front_end?

    @access_required()
    def get(self):
        args = self.get_table_x.parse_args()
        try:
            end_date = args.get('end_date')
            sql_end_date_15days = """
            SELECT count(1), DATE_FORMAT(end_date, '%m/%d/%Y')
            FROM table_x GROUP BY end_date 
            HAVING end_date BETWEEN NOW() - INTERVAL 15 DAY AND NOW();
            """

            sql_end_date_7days = """
            SELECT count(1), DATE_FORMAT(end_date, '%m/%d/%Y')
            FROM table_x GROUP BY end_date 
            HAVING end_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW();
            """

            returninfo = db.session.execute(sql_end_date_15days)
            return_data = [dict(zip(d.keys(), d)) for d in returninfo]
             
            return {"status": True, "message": "Succeed", "data": return_data}
        except Exception as e:
            current_app.logger.error(e)
            return {"status": False, "message": "Failed", "data": None}
 
 SELECT SUM(count(1)) FROM(SELECT count(1), DATE_FORMAT(end_date, '%m/%d/%Y')
FROM table_x GROUP BY end_date 
HAVING end_date BETWEEN NOW() - INTERVAL 15 DAY AND NOW())t1;
 
 # Count within 15 days
sum(count(1))   
 36
 

И мой код python, и SQL неверны, что мне действительно нужно, так это посчитать указанное выше число вместе, в течение 15 дней верните данные 36

Большое спасибо за любой совет.