Adding comments

This commit is contained in:
Mylloon 2021-11-19 11:12:28 +01:00
parent 8dcb4755fb
commit e83c5e5a04
2 changed files with 32 additions and 29 deletions

43
db.py
View file

@ -1,51 +1,52 @@
import sqlite3
from sqlite3.dbapi2 import Cursor
class BaseDeDonnees:
"""Gère la base de donnée."""
def __init__(self, urlBaseDeDonnee: str):
self.connexion = self.creerConnexion(urlBaseDeDonnee)
def creerConnexion(self, path):
def creerConnexion(self, path: str):
"""Connexion à une base de donnée SQLite."""
if not self.fichierExiste(path):
open(path, "x")
connnexion = None
if not self.fichierExiste(path): # si l base de donnée n'existe pas
open(path, "x") # on la créer
try:
connnexion = sqlite3.connect(path)
except sqlite3.Error as e:
print(e)
print(e) # on affiche l'erreur
connnexion = None # et renvoie None
return connnexion
def fichierExiste(self, path):
def fichierExiste(self, path: str) -> bool:
"""Vérifie qu'un fichier existe."""
try:
try: # on essaie d'ouvrir le fichier
open(path, "r")
except FileNotFoundError:
except FileNotFoundError: # si le fichier n'existe pas
return False
else:
else: # si le fichier existe
return True
def requete(self, requete, valeurs = None):
def requete(self, requete: str, valeurs = None):
"""Envois une requête vers la base de données."""
try:
curseur = self.connexion.cursor()
if valeurs:
if type(valeurs) not in [list, tuple]:
if valeurs: # s'il y a des valeurs alors on lance la commande `execute` avec ses dernières
if type(valeurs) not in [list, tuple]: # si la valeur c'est juste une chaîne de charactère (par exemple), alors la converti en liste
valeurs = [valeurs]
curseur.execute(requete, valeurs)
else:
else: # sinon on lance juste la requête
curseur.execute(requete)
self.connexion.commit()
return (curseur, curseur.lastrowid)
except sqlite3.Error as e:
self.connexion.commit() # applique les changements à la base de donnée
return (curseur, curseur.lastrowid) # renvoie le curseur et l'ID de l'élément modifié
except sqlite3.Error as e: # s'il y a eu une erreur SQLite
print(e)
def affichageResultat(self, curseur):
def affichageResultat(self, curseur: Cursor) -> list:
"""Affiche le résultat d'une requête."""
tableau = []
if curseur == None:
if curseur == None: # si le curseur est vide il n'y a rien a affiché (tableau vide)
return tableau
lignes = curseur[0].fetchall()
lignes = curseur[0].fetchall() # sinon on récupère les éléments
for ligne in lignes:
tableau.append(ligne)
return tableau
tableau.append(ligne) # on les ajoute au tableau
return tableau # on le renvoie

View file

@ -46,27 +46,29 @@ class Utilisateurs(BaseDeDonnees):
self.requete(requete, [pseudo, passe, metier, nom, prenom, naissance, adresse, postal])
return self.affichageResultat(self.requete("SELECT last_insert_rowid();"))
def suppressionUtilisateurs(self, nom: int) -> None:
def suppressionUtilisateurs(self, pseudo: str) -> None:
"""Supprime un utilisateur."""
requete = """
DELETE FROM utilisateurs
WHERE nom = ?
WHERE pseudo = ?
"""
self.requete(requete, nom)
self.requete(requete, pseudo)
def verificationIdentifiants(self, nom: str, motDePasse: str) -> bool:
def verificationIdentifiants(self, pseudo: str, motDePasse: str) -> bool:
"""Renvoie vrai ou faux si les identifiants données sont bons."""
requete = """
SELECT EXISTS (
SELECT 1 FROM utilisateurs
WHERE nom = ? AND passe = ?
WHERE pseudo = ? AND passe = ?
)
"""
return True if self.affichageResultat(self.requete(requete, [nom, motDePasse]))[0][0] == 1 else False
# Vrai si le premier élément que renvoie la requête au dessus est 1
return True if self.affichageResultat(self.requete(requete, [pseudo, motDePasse]))[0][0] == 1 else False
def listUtilisateurs(self) -> list:
"""Retourne la liste des utilisateurs."""
"""Retourne la liste des nom d'utilisateurs."""
requete = """
SELECT nom FROM utilisateurs
SELECT pseudo FROM utilisateurs
"""
# i[0] parce que sinon ça renvoie des Tuple qui ressemble à ça : `(Utilisateur,)`
return [i[0] for i in self.affichageResultat(self.requete(requete))]