From 1118a8aeb28f04d5352e597fd1fb1bfa2cdb55c2 Mon Sep 17 00:00:00 2001 From: nathan <nathan9.baker@live.uwe.ac.uk> Date: Mon, 18 Nov 2024 11:49:02 +0000 Subject: [PATCH] added more dbfuncs, note: i cant debug any of it untill we have adb setup. --- src/dbfunc.py | 68 ++++++++++++++++++++++++++++++++++++++++++++---- src/staffUser.py | 8 +++--- 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/src/dbfunc.py b/src/dbfunc.py index 067b8ca..b337a0b 100644 --- a/src/dbfunc.py +++ b/src/dbfunc.py @@ -1,5 +1,4 @@ -import logging -import mysql.connector +import logging, json, mysql.connector from mysql.connector import errorcode # Vars @@ -42,7 +41,7 @@ def getConnection(db=""): logging.error("Connected to server, without database.") return conn -def selectFromTbl(table, dbname, *args): +def selectFromTbl(table, dbname, *args) -> json: logging.debug(f"running slect statement with values: tablename='{table}'', dbname='{dbname}'', {args}") conn = getConnection(db=dbname) if conn != None: @@ -57,13 +56,72 @@ def selectFromTbl(table, dbname, *args): dbcursor.execute(f"USE {dbname}") dbcursor.execute(SELECT_STATEMENT) logging.info("SELECT statement executed successfully.") - dataOut = dbcursor.fetchall() - logging.debug(f"dataOut: {dataOut}") + data = dbcursor.fetchall() + logging.debug(f"dataOut: {data}") dbcursor.close() conn.close() + data = json.dumps(data) + return data else: logging.error("conn not connected") raise ConnectionError() else: logging.error("conn returned NoneType") raise ConnectionAbortedError() + +def selectFromTblWhere(table, dbname, condition, *args) -> json: + logging.debug(f"running select statement with values: tablename='{table}'', dbname='{dbname}'', {args}") + conn = getConnection(db=dbname) + if conn == None: + logging.error("conn returned NoneType") + raise ConnectionAbortedError() + if conn.is_connected(): + SELECT_statement = "SELECT " + for arg in args: + SELECT_statement.append(f"{arg}, ") + SELECT_statement.removesuffix(", ") + SELECT_statement.append(f" from {table};") + + dbcursor = conn.cursor() + dbcursor.execute(f"USE {dbname}") + dbcursor.execute(SELECT_statement) + logging.info("SELECT statement executed successfully.") + data = dbcursor.fetchall() + logging.debug(f"dataOut: {data}") + dbcursor.close() + conn.close() + data = json.dumps(data) + return data + else: + logging.error("conn not connected") + raise ConnectionError() + + +def saveToTbl(table, dbname, jsonData): + logging.debug(f"running update statment with values: tablename='{table}', dbname='{dbname}', data='{jsonData}'") + conn = getConnection(db=dbname) + if conn == None: + logging.error("conn returned NoneType") + raise ConnectionAbortedError() + if conn.is_connected(): + logging.debug("MySQL Connection is established.") + INSERT_statement = f"INSERT INTO {table} (" + dictData = json.loads(jsonData) + keys = "" + values = "" + for key, value in dictData.items(): + keys.append(f"{key}, ") + values.append(f"{value}, ") + INSERT_statement.append(f"{keys.removesuffix(", ")}) VALUES ({values.removesuffix(", ")});") + + dbcursor = conn.cursor() + dbcursor.execute(INSERT_statement) + conn.commit() + dbcursor.close() + + conn.close() + logging.debug("INSERT query executed with no issues.") + else: + logging.error("conn not connected") + raise ConnectionError() + diff --git a/src/staffUser.py b/src/staffUser.py index c770fe8..9708dea 100644 --- a/src/staffUser.py +++ b/src/staffUser.py @@ -1,6 +1,6 @@ -import logging -import random +import logging, json +from .dbfunc import * from .cinemaObj import Cinema @@ -55,8 +55,8 @@ class StaffUser(object): def manageBooking(self): raise NotImplementedError() - def updateFromDataBase(self) -> None: - # call dbFunc + def updateFromDataBase(self, userID) -> None: + selectFromTblWhere("tblUsers", "", f"user_id={userID}", "*") # gets dbData in form of json # convert to dict? # update self data with new values. -- GitLab