From 5aa494773e064b94f5a1e8875586a353be034491 Mon Sep 17 00:00:00 2001 From: sietse jonker Date: Mon, 1 Apr 2024 16:09:20 +0200 Subject: [PATCH] Refactor getData function and fix SQL query in queries.py --- server/Flask/main.py | 6 ++++-- server/Flask/queries.py | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/server/Flask/main.py b/server/Flask/main.py index 029b1e0..87168c9 100644 --- a/server/Flask/main.py +++ b/server/Flask/main.py @@ -1,6 +1,7 @@ from flask import Flask, request, jsonify import mysql.connector from queries import * +import ast app = Flask(__name__) @app.route('/getMeasurements') @@ -49,9 +50,10 @@ def loginDB(): ) return mydb -def getData(node, dataType, MAC, dateStart, dateEnd, type): +def getData(node, dataType, MAC, dateStart, dateEnd): + dataTypeTuple = ast.literal_eval(dataType) mydb = loginDB() - query = get_query(node, dataType, MAC, dateStart, dateEnd, type) + query = get_query(node, dataTypeTuple, MAC, dateStart, dateEnd) cursor = mydb.cursor(dictionary=True) # Enable dictionary output cursor.execute(query) result = cursor.fetchall() # Fetch the results diff --git a/server/Flask/queries.py b/server/Flask/queries.py index 8c6d004..0211c8d 100644 --- a/server/Flask/queries.py +++ b/server/Flask/queries.py @@ -2,11 +2,15 @@ def get_query(node, dataType, MAC, questionID, replies, dateStart, dateEnd): if dateStart and dateEnd and node and dataType: query = f'''SELECT * FROM Measurement - WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}' AND NodeID = {node} AND Type IN {dataType} OR;''' + WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}' AND NodeID = {node} AND Type IN ('{dataType}');''' elif dateStart and dateEnd and node: query = f'''SELECT * FROM Measurement WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}' AND NodeID = {node};''' + elif dateStart and dateEnd: + query = f'''SELECT * + FROM Measurement + WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}';''' elif node and dataType: query = f"SELECT * FROM Measurement WHERE NodeID = {node} AND Type = '{dataType}'" elif node: @@ -21,10 +25,7 @@ def get_query(node, dataType, MAC, questionID, replies, dateStart, dateEnd): query = f"SELECT * FROM Question" elif replies: query = f"SELECT * FROM Reply" - elif dateStart and dateEnd and node: - query = f'''SELECT * - FROM Measurement - WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}';''' + else: query = "SELECT * FROM `Measurement`" return query