#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
Большое спасибо за любой совет.