1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| import sys
from PyQt5 import (QtWidgets, QtCore, QtSql)
from PyQt5 import *
from PyQt5.QtWidgets import QApplication, QLineEdit
def ouvrebaseqt(basesql):
db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName(basesql)
if not db.open():
db = None
return db
def fermebaseqt(db):
if db!=None:
db.close()
class VoirTableSql(QtWidgets.QMainWindow):
def __init__(self, basesql, table, parent=None):
super().__init__(parent)
self.setGeometry(500, 500, 500, 500)
self.basesql = basesql
self.db = ouvrebaseqt(self.basesql)
if self.db == None:
QtWidgets.QMessageBox.critical(self, "Ouverture de la base de données", "Erreur d'ouverture")
self.close()
sys.exit()
self.table = table
self.model = QtSql.QSqlRelationalTableModel(self, self.db)
self.model.setEditStrategy(QtSql.QSqlRelationalTableModel.OnManualSubmit)
self.vuetable = QtWidgets.QTableView(self)
self.vuetable.setModel(self.model)
self.vuetable.setSortingEnabled(True)
posit = QtWidgets.QGridLayout()
self.bouton1 = QtWidgets.QPushButton("Enregistrer les modifications dans la table", self)
self.bouton1.clicked.connect(self.appliquer)
posit.addWidget(self.bouton1, 0, 0)
self.setCentralWidget(QtWidgets.QFrame())
posit.addWidget(self.vuetable, 1, 0)
self.centralWidget().setLayout(posit)
self.model.setTable(self.table)
self.model.select()
self.vuetable.setItemDelegate(QtSql.QSqlRelationalDelegate(self.vuetable))
self.vuetable.resizeColumnsToContents()
self.vuetable.resizeRowsToContents()
def appliquer(self):
if self.model.submitAll():
self.vuetable.resizeColumnsToContents()
self.vuetable.resizeRowsToContents()
QtWidgets.QMessageBox.information(self, "Enregistrement des modifications", "Enregistrement terminé")
else:
QtWidgets.QMessageBox.warning(self, "Enregistrement des modifications", "Erreur: %s" % self.model.lastError().text())
def closeEvent(self, event=None):
fermebaseqt(self.db)
event.accept() |
Partager