Refactor getData function and fix SQL query in queries.py

This commit is contained in:
sietse jonker
2024-04-01 16:09:20 +02:00
parent a53ecb1c96
commit 5aa494773e
2 changed files with 10 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
import mysql.connector import mysql.connector
from queries import * from queries import *
import ast
app = Flask(__name__) app = Flask(__name__)
@app.route('/getMeasurements') @app.route('/getMeasurements')
@@ -49,9 +50,10 @@ def loginDB():
) )
return mydb return mydb
def getData(node, dataType, MAC, dateStart, dateEnd, type): def getData(node, dataType, MAC, dateStart, dateEnd):
dataTypeTuple = ast.literal_eval(dataType)
mydb = loginDB() 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 = mydb.cursor(dictionary=True) # Enable dictionary output
cursor.execute(query) cursor.execute(query)
result = cursor.fetchall() # Fetch the results result = cursor.fetchall() # Fetch the results

View File

@@ -2,11 +2,15 @@ def get_query(node, dataType, MAC, questionID, replies, dateStart, dateEnd):
if dateStart and dateEnd and node and dataType: if dateStart and dateEnd and node and dataType:
query = f'''SELECT * query = f'''SELECT *
FROM Measurement 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: elif dateStart and dateEnd and node:
query = f'''SELECT * query = f'''SELECT *
FROM Measurement FROM Measurement
WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}' AND NodeID = {node};''' 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: elif node and dataType:
query = f"SELECT * FROM Measurement WHERE NodeID = {node} AND Type = '{dataType}'" query = f"SELECT * FROM Measurement WHERE NodeID = {node} AND Type = '{dataType}'"
elif node: elif node:
@@ -21,10 +25,7 @@ def get_query(node, dataType, MAC, questionID, replies, dateStart, dateEnd):
query = f"SELECT * FROM Question" query = f"SELECT * FROM Question"
elif replies: elif replies:
query = f"SELECT * FROM Reply" query = f"SELECT * FROM Reply"
elif dateStart and dateEnd and node:
query = f'''SELECT *
FROM Measurement
WHERE TimeStamp BETWEEN '{dateStart}' AND '{dateEnd}';'''
else: else:
query = "SELECT * FROM `Measurement`" query = "SELECT * FROM `Measurement`"
return query return query