IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Recupération des données via un tableView [QtSql]


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Profil pro
    toto
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : toto

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Recupération des données via un tableView
    Bonsoir,

    Depuis deux semaines, je galère pour récupérer des données d'une BD MySQL pour les afficher dans un TableView. J'ai adapté le code en exemple dans la FAQ mais sans succès. voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import sys
     
    import mysql.connector
     
    from PySide import QtGui, QtCore
    from PySide.QtCore import SIGNAL
    from PySide.QtGui import QMainWindow, QDialog, QApplication, QStandardItem,\
        QTableView
    from PySide.QtSql import QSqlTableModel, QSqlQueryModel
     
    from UIfenprincipale import Ui_fenPrincipale
     
     
    class FenPrincipale(QMainWindow, Ui_fenPrincipale):
        '''
        '''
     
     
        def __init__(self, parent=None):
            super(FenPrincipale, self).__init__(parent)
            self.setupUi(self)
     
            db=mysql.connector.connect(user = 'xxx', password = 'yyy', database = 'essai')
     
     
            model = QSqlTableModel()
            model.setTable('essai')
            model.setEditStrategy(QSqlTableModel.OnManualSubmit)
            model.select()
            model.setHeaderData(0, QtCore.Qt.Horizontal, "Index")
            model.setHeaderData(1, QtCore.Qt.Horizontal, "Nom")
            model.setHeaderData(2, QtCore.Qt.Horizontal, "Obs")
     
     
            self.tableEssai.setModel(model)
     
            db.close()     
     
    if __name__ == '__main__':
     
        app = QApplication(sys.argv)
        frame = FenPrincipale()
        frame.show()
        app.exec_()
    J'ai peur que cela vienne du mode de connexion à la BD : galérant à compiler le driver MySQL sous QT (je ne trouve aucune explication satisfaisante : j’obtiens à chaque fois une erreur !), j'ai préféré me connecter à la BD via le connecteur python distribué avec MySQL.

    Si quelqu'un pouvait me donner un début de solution je lui en serai reconnaissant ! Merci.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Qt (et donc PySide), vient avec le pilote pour MySql: as-tu une raison précise pour le recompiler?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Profil pro
    toto
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : toto

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Je suis le boulet du jour !

    J'ai été induit en erreur car j'avais déjà essayé ça sous PyQt et cela m'avait retourné un erreur genre 'driver not loaded' et en fouillant sur les forums j'avais trouvé une réponse qui disait qu'il fallait installer le driver MySql sous Qt en le compilant !


    pour tout ceux qui galère comme moi voici commen il convient de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    base = QtSql.QSqlDatabase()
            base = QtSql.QSqlDatabase.addDatabase("QMYSQL")
            base.setHostName("127.0.0.1")
            base.setDatabaseName("xxx")
            base.setUserName("root")
            base.setPassword("password")
            base.open()    
     
     
            model = QSqlTableModel()
            model.setTable('table')
            model.setEditStrategy(QSqlTableModel.OnManualSubmit)
            model.select()
            model.setHeaderData(0, QtCore.Qt.Horizontal, "col1")
            model.setHeaderData(1, QtCore.Qt.Horizontal, "col2")
            model.setHeaderData(2, QtCore.Qt.Horizontal, "col3")
     
     
            self.tablePortefeuille.setModel(model)
            base.close()
    J'ai trop honte...vous pouvez y aller franchement, je l'ai bien mérité...

    Deux semaines de galère pour ça

    En tout cas merci, ça m'a permis de réfléchir différemment à la question !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment puis-je recupérer des données envoyées via TCP
    Par pierrot10 dans le forum Général Python
    Réponses: 0
    Dernier message: 26/12/2014, 00h12
  2. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27
  3. Récupérer des données via le port usb
    Par matmuth dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/05/2005, 16h34
  4. Réponses: 7
    Dernier message: 20/03/2005, 14h53
  5. Réponses: 2
    Dernier message: 20/01/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo