TP4 Python: Les bases de données
Exercice 1:
Script Python :
import sys
from [Link] import QApplication, QMainWindow, QInputDialog, QMessageBox,
QTableWidgetItem
from [Link] import loadUi
import sqlite3
class fenetre1(QMainWindow):
def __init__(self):
super().__init__()
loadUi("[Link]", self)
[Link] = [Link]('[Link]')
[Link] = [Link]()
[Link]('''CREATE TABLE IF NOT EXISTS PRODUIT
(reference TEXT PRIMARY KEY, prix INTEGER, quantite_stock INTEGER)''')
[Link]('''CREATE TABLE IF NOT EXISTS Clients
(Num_client INTEGER PRIMARY KEY, Nom TEXT,
Adresse TEXT, Code_Postal TEXT)''')
[Link]()
[Link](self._ajoute_)
[Link](self._suprimer_)
[Link](self._recherche_)
[Link](self._Gclients_)
[Link](self._quitter_)
def _ajoute_(self):
txt1 = [Link]()
txt2 = [Link]()
txt3 = [Link]()
if txt1 and txt2 and txt3:
try:
[Link]('''INSERT INTO PRODUIT (reference, prix, quantite_stock)
VALUES(?,?,?)''', (txt1, int(txt2), int(txt3)))
[Link]()
[Link]()
[Link]()
[Link]()
[Link](self, "Succès", "Produit ajouté")
except ValueError:
[Link](self, "Erreur", "Prix et quantité doivent être des nombres")
except Exception as e:
[Link](self, "Erreur", f"Erreur: {e}")
def _suprimer_(self):
txt1 = [Link]()
if txt1:
try:
[Link]('''DELETE FROM PRODUIT WHERE reference = ?''', (txt1,))
[Link]()
[Link]()
[Link]()
[Link]()
[Link](self, "Succès", "Produit supprimé")
except Exception as e:
[Link](self, "Erreur", f"Erreur: {e}")
def _recherche_(self):
reference, ok = [Link](self, "recherche", "saisir la reference")
if ok and reference:
[Link]('''SELECT * FROM PRODUIT WHERE reference = ?''', (reference,))
produit = [Link]()
if produit:
message = f"reference: {produit[0]}\nprix: {produit[1]}\nquantite en stock: {produit[2]}"
[Link](self, "resultat", message)
else:
[Link](self, "resultat", "Produit non trouvé")
def _Gclients_(self):
self.fenetre_client = fenetre2()
self.fenetre_client.show()
def _quitter_(self):
[Link]()
[Link]()
class fenetre2(QMainWindow):
def __init__(self):
super().__init__()
loadUi("[Link]", self)
[Link] = [Link]('[Link]')
[Link](self._filtrer_)
self._remplir_donnees_exemple()
def _remplir_donnees_exemple(self):
clients = [
(1, "Dupont Jean", "12 Rue de Paris, Tunis", "1000"),
(2, "Martin Sophie", "45 Avenue Habib Bourguiba, Sfax", "3000"),
(3, "Bernard Pierre", "8 Rue de la République, Tunis", "1002"),
(4, "Leroy Marie", "25 Rue Ali Belhouane, Sousse", "4000"),
(5, "Petit David", "30 Avenue de la Liberté, Tunis", "1001"),
(6, "Moreau Alice", "15 Rue Ibn Khaldoun, Sfax", "3020")
]
cursor = [Link]()
[Link]('''INSERT OR IGNORE INTO Clients VALUES (?, ?, ?, ?)''', clients)
[Link]()
[Link]()
self._filtrer_()
def _filtrer_(self):
ville = [Link]().strip()
cursor = [Link]()
if ville:
[Link]('''SELECT * FROM Clients WHERE Adresse LIKE ?''', (f'%{ville}%',))
else:
[Link]('''SELECT * FROM Clients''')
clients_filtres = [Link]()
self.afficher_dans_tableau(clients_filtres)
def afficher_dans_tableau(self, clients):
[Link](len(clients))
for ligne, client in enumerate(clients):
for colonne, valeur in enumerate(client):
item = QTableWidgetItem(str(valeur))
[Link](ligne, colonne, item)
def closeEvent(self, event):
[Link]()
[Link]()
if __name__ == "__main__":
app = QApplication([Link])
fenetre = fenetre1()
[Link]()
app.exec_()
Interfaces graphiques correspondantes avec Qt Designer :