diff options
Diffstat (limited to 'src/database/dbmain.py')
| -rw-r--r-- | src/database/dbmain.py | 71 |
1 files changed, 45 insertions, 26 deletions
diff --git a/src/database/dbmain.py b/src/database/dbmain.py index 602cec6..1dbb301 100644 --- a/src/database/dbmain.py +++ b/src/database/dbmain.py @@ -6,8 +6,10 @@ # # ############################################################################ +from types import NoneType import mysql.connector from passlib.hash import sha512_crypt +from PyQt5.QtWidgets import QMessageBox # const si CAPS # https://www.w3schools.com/python/python_mysql_getstarted.asp @@ -142,37 +144,18 @@ class DbMain(): # **************************************************************************** # FONCTIONS PRINCIPALES # **************************************************************************** - # Constructeur, fonction "auto" déclenchée à l'instanciation - def __init__(self): - if self.DEBUG: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE, - raise_on_warnings=self.DEBUG - ) - else: - self.conn = mysql.connector.connect( - host=self.HOST, - user=self.USER, - password=self.PASSWORD, - database=self.DATABASE - ) - self.cur = self.conn.cursor() - # Création de la DB si elle n'existe pas - def create_db(self): + def create_db(self) -> None: reqInitDb = "CREATE DATABASE IF NOT EXISTS " + self.DATABASE self.cur.execute(reqInitDb) # Sélection de la DB - def select_db(self): + def select_db(self) -> None: reqSelectDb = "USE " + self.DATABASE self.cur.execute(reqSelectDb) # Création des tables si elles n'existent pas - def create_table(self): + def create_table(self) -> None: # userAccount reqInitUserAccount = self.CREATETABLEUSERACCOUNT self.cur.execute(reqInitUserAccount) @@ -190,28 +173,64 @@ class DbMain(): self.cur.execute(reqInitMission) # Déclenche les méthodes pour créer la BDD - def init(self): + def init(self) -> None: self.create_db() self.select_db() self.create_table() # Chiffre la data reçue - def crypt_pass(self, password): + def crypt_pass(self, password: str) -> str: return sha512_crypt.hash(password, rounds=10000) # Prépare la requète pour mitiger (se protéger) les injections SQL et # initialise si nécessaire la BDD à chaque requète - def exec_cmd(self, req, arg=None): + def exec_cmd(self, req: str, arg: list = None, commit: bool = False) -> None: self.init() if arg: self.cur.execute(req, arg) + if commit: + self.conn.commit() else: self.cur.execute(req) # Vérifie si l'email existe dans la table userAccount de la BDD - def check_exist_email(self, email): + def check_exist_email(self, email: str) -> int: reqCheckEmailExist = "SELECT EXISTS(SELECT * FROM " + \ self.TABLEUSERACCOUNT + " WHERE email = %s)" self.exec_cmd(reqCheckEmailExist, [email]) # Retourne 1 si existe, sinon 0 return self.cur.fetchall()[0][0] + + # Constructeur, fonction "auto" déclenchée à l'instanciation + def __init__(self, mainWindow) -> None: + try: + if self.DEBUG: + self.conn = mysql.connector.connect( + host=self.HOST, + user=self.USER, + password=self.PASSWORD, + database=self.DATABASE, + raise_on_warnings=self.DEBUG + ) + else: + self.conn = mysql.connector.connect( + host=self.HOST, + user=self.USER, + password=self.PASSWORD, + database=self.DATABASE + ) + self.cur = self.conn.cursor() + except mysql.connector.errors.DatabaseError as e: + if self.DEBUG: + QMessageBox.warning( + mainWindow, + "Erreur avec la BDD", + str(e) + ) + else: + QMessageBox.warning( + mainWindow, + "Erreur avec la BDD", + "Veuillez vérifier si la BDD est accessible." + ) + exit(1) |
