Adding DB support

This commit is contained in:
Mylloon 2021-11-18 20:40:34 +01:00
parent ab98005230
commit 3b6b9b4cf7
2 changed files with 105 additions and 0 deletions

51
db.py Normal file
View file

@ -0,0 +1,51 @@
import sqlite3
class BaseDeDonnees:
"""Gère la base de donnée."""
def __init__(self, urlBaseDeDonnee: str):
self.connexion = self.creerConnexion(urlBaseDeDonnee)
def creerConnexion(self, path):
"""Connexion à une base de donnée SQLite"""
if not self.fichierExiste(path):
open(path, "x")
connnexion = None
try:
connnexion = sqlite3.connect(path)
except sqlite3.Error as e:
print(e)
return connnexion
def fichierExiste(self, path):
"""Vérifie qu'un fichier existe"""
try:
open(path, "r")
except FileNotFoundError:
return False
else:
return True
def requete(self, requete, 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]:
valeurs = [valeurs]
curseur.execute(requete, valeurs)
else:
curseur.execute(requete)
self.connexion.commit()
return (curseur, curseur.lastrowid)
except sqlite3.Error as e:
print(e)
def affichageResultat(self, curseur):
"""Affiche le résultat d'une requête"""
tableau = []
if curseur == None:
return tableau
lignes = curseur[0].fetchall()
for ligne in lignes:
tableau.append(ligne)
return tableau

54
users.py Normal file
View file

@ -0,0 +1,54 @@
from db import BaseDeDonnees
class Utilisateurs(BaseDeDonnees):
"""Gère une table "utilisateurs" pour une base de donnée donné."""
def __init__(self):
super().__init__(r"utilisateurs.sqlite3")
def creationTable(self) -> None:
"""Créer la table qui stocker les utilisateurs."""
requete = """
CREATE TABLE IF NOT EXISTS utilisateurs (
nom TEXT,
passe TEXT,
metier TEXT
);
"""
self.requete(requete)
def ajoutUtilisateurs(self, nom: str, motDePasse: str, metier: str) -> list:
"""Ajoute un utilisateur et retourne l'ID de ce dernier."""
requete = """
INSERT INTO utilisateurs (
nom, passe, metier
) VALUES (
?, ?, ?
);
"""
self.requete(requete, [nom, motDePasse, metier])
return self.affichageResultat(self.requete("SELECT last_insert_rowid();"))
def suppressionUtilisateurs(self, nom: int) -> None:
"""Supprime un utilisateur."""
requete = """
DELETE FROM utilisateurs
WHERE nom = ?
"""
self.requete(requete, nom)
def verificationIdentifiants(self, nom: 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 = ?
)
"""
return True if self.affichageResultat(self.requete(requete, [nom, motDePasse]))[0][0] == 1 else False
def listUtilisateurs(self) -> list:
"""Retourne la liste des utilisateurs."""
requete = """
SELECT nom FROM utilisateurs
"""
return [i[0] for i in self.affichageResultat(self.requete(requete))]