2017-09-14 4 views
0

Je suis occupé avec un projet universitaire où je dois créer une base de données SQL et être capable de travailler avec les données via un programme créé en Python et PyQT.Impossible d'afficher les informations de MySQL dans l'application PyQT en utilisant QTableView

J'ai créé la base de données, ajouté des tables et des données dans les tables, mais maintenant je dois utiliser le widget QTableView pour afficher les données et quand je l'exécute, je reçois une fenêtre vide.

J'ai remarqué que si je change des détails tels que nom d'utilisateur, mot de passe ou nom de base de données à quelque chose de aléatoire, je reçois toujours le même résultat qui me dit que la connexion à la base de données ne se produit pas. Est-ce que quelqu'un peut regarder mon code et aider? Même avec juste quelques conseils pour obtenir un message d'erreur?

from __future__ import division 
import sys 
from PyQt4 import QtCore, QtGui, QtSql 

from showrec import* 

def createConnection(): 
    db=QtSql.QSqlDatabase.addDatabase('QMYSQL') 
    db.setHostName('localhost') 
    db.setDatabaseName('database') 
    db.setUserName('username') 
    db.setPassword('password') 
    db.open() 
    print(db.lastError().text()) 
    return True 

class MyForm(QtGui.QDialog): 
    def _init_(self,parent=None): 
     QtGui.QWidget._init_(self,parent) 
     self.ui=Ui_Dialog() 
     self.ui.setp.Ui(self) 
     self.model=QtSQL.QSqlTableModel(self) 
     self.Model.SetTable("table1") 
     self.Model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit) 
     self.model.select() 
     self.ui.tableView.SetModel(self.model) 

if __name__ == "__main__": 

    app=QtGui.QApplication(sys.argv) 
    if not createConnection(): 
     sys.exit(1) 
    myapp=MyForm() 
    myapp.show() 
    sys.exit(app.exec_())` 
+0

'self.ui.tableView.SetModel (self.model)': N'est-ce pas 'setModel'? – JonBrave

+0

l'objet 'db' que vous créez dans' createConnection' reste dans cette fonction, vous devrez peut-être retourner et l'assigner dans votre classe, ou faire de cette fonction une méthode de classe, et utiliser 'self.db = ...' – PRMoureu

Répondre

0

OK. J'ai trouvé mon erreur je place un seul _ avant et après initialisation au lieu de def initialisation (self, parent = None):

au lieu de: def initialisation (self, parent = None):

erreur stupide mais celui qui m'a occupé pendant des heures. Merci pour la réponse JonBrave