2.2. Modification du modèle
Comme on a suivi une conception MVD, le changement du mode de persistance des
données concerne essentiellement le modèle. Dans la classe ModeleTableBiblio, on
va changer le constructeur pour créer la base de données ou la lire et modifier les
méthodes ajouteLivre, remplaceLivre et supprimeLivre. Commençons donc par
éditer modele_biblio.py.
Comme SQLLite stocke sa base de données dans un fichier unique, on va définir un
nom de fichier dans une variable :
NOM_FICHIER_DB = "bibliotheque.db"
Note > Dans d'autres SGBD, ce sera un peu plus compliqué : il faudra typiquement
définir un nom de machine, un port, un nom de base de données, un nom d'utilisateur
et un mot de passe.
Ensuite, on ajoute dans le tuple nommé Livre un attribut idLivre, stockant
l'identificateur du livre dans la base de données.
Livre = namedtuple('Livre', ('idLivre', 'titre', 'auteur', 'editeur',
'genre', 'annee', 'resume', 'prix'))
À l'inverse des autres attributs, idLivre est caché à l'utilisateur, il servira uniquement
lors des mises à jour ou suppressions pour identifier l'enregistrement concerné.
Attention : ceci nécessite une petite adaptation dans la méthode data: il faut
incrémenter le numéro de colonne, sachant que le nouveau champ fait tout décaler d'une
position à droite :
def data(self,index,role):
if role == Qt.DisplayRole and index.isValid():
return self.livres[index.row()][index.column()+1]
return QVariant()
Voici à présent le constructeur ModeleTableBiblio.__init__ mis à jour, avec trois
nouvelles méthodes creeBD, litBD et genres.
…
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from collections import namedtuple, OrderedDict
import os
…
class ModeleTableBiblio(QAbstractTableModel):
163
Précédent

- 164/494

Suivant