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

Python Discussion :

Insertion des données d’après un Qtablwidget vers BD avec Python et MySQL Connector


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Insertion des données d’après un Qtablwidget vers BD avec Python et MySQL Connector
    Bonjour
    dans le cadre de la réalisation d'un plugin de QGis (2.8 Wien), qui import des données et les affiches dans des tableWidget l'étape suivante c'est de les insérer dans la BD,mais je me trouve bloquer avec mon code qui s’exécute mais les données ça passe pas,je croie que j'ai le problème dans la boucle de récupération des donnes du tableau.
    cordialement
    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
     
    import mysql.connector
     
        def connexion_siteclicked(self):
     
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='bde01')
            cursor = cnx.cursor()
            rows =self.ui.tablesite.rowCount()
            columns = self.ui.tablesite.columnCount()
     
            site = list()
            for r in range(rows):
     
                id_site = (self.ui.tablesite.item(i,0)).text()
                longi = (self.ui.tablesite.item(i,1)).text()
                lat = (self.ui.tablesite.item(i,2)).text()
                fibre = (self.ui.tablesite.item(i,3)).text()
                etudie = (self.ui.tablesite.item(i,4)).text()
                nodal = (self.ui.tablesite.item(i,5)).text()
                milieu = (self.ui.tablesite.item(i,6)).text()
     
     
            insert_sit= ("INSERT INTO site "
                        "(ID_SITE, LAT, LONGI, FIBRER, NODAL, ETUDIER, MILIEU) "
                        "VALUES (%s, %s, %s, %s, %s, %s, %s)")
            data_sit = (id_site, longi, lat, fibre, etudie, nodal, milieu)
            cursor.execute(insert_sit, data_sit)
            cnx.commit()
            cursor.close()
            cnx.close()

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kacimed Voir le message
    Bonjour
    dans le cadre de la réalisation d'un plugin de QGis (2.8 Wien), qui import des données et les affiches dans des tableWidget l'étape suivante c'est de les insérer dans la BD,mais je me trouve bloquer avec mon code qui s’exécute mais les données ça passe pas,je croie que j'ai le problème dans la boucle de récupération des donnes du tableau.
    cordialement
    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
     
    import mysql.connector
     
        def connexion_siteclicked(self):
     
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='bde01')
            cursor = cnx.cursor()
            rows =self.ui.tablesite.rowCount()
            columns = self.ui.tablesite.columnCount()
     
            site = list()
            for r in range(rows):
     
                id_site = (self.ui.tablesite.item(i,0)).text()
                longi = (self.ui.tablesite.item(i,1)).text()
                lat = (self.ui.tablesite.item(i,2)).text()
                fibre = (self.ui.tablesite.item(i,3)).text()
                etudie = (self.ui.tablesite.item(i,4)).text()
                nodal = (self.ui.tablesite.item(i,5)).text()
                milieu = (self.ui.tablesite.item(i,6)).text()
            # for
     
     
            insert_sit= ("INSERT INTO site "
                        "(ID_SITE, LAT, LONGI, FIBRER, NODAL, ETUDIER, MILIEU) "
                        "VALUES (%s, %s, %s, %s, %s, %s, %s)")
            data_sit = (id_site, longi, lat, fibre, etudie, nodal, milieu)
            cursor.execute(insert_sit, data_sit)
            cnx.commit()
            cursor.close()
            cnx.close()
    Bonjour

    C'est normal que l'insert soit en dehors de la boucle ??? Je t'ai mis une fin de boucle pour que tu voies mieux et tu devrais t'en inspirer dans tes codes (moi j'en mets systématiquement à chaque if/while/for/fonction/classe)...
    Et la variable "columns" n'est jamais utilisée.

    Citation Envoyé par kacimed Voir le message
    Attention, ce smiley est très péjoratif. Il signifie que tu considères que celui pour qui tu l'adresses a dit une grosse connerie...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    merci Sve@r pour votre réponse le problème c’était que l'insert est cursor.execute doivent être dans la boucle
    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
     
        def connexion_siteclicked(self):
     
            cnx = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='bde01')
            cursor = cnx.cursor()
            rows =self.ui.tablesite.rowCount()
            columns = self.ui.tablesite.columnCount()
     
            site = list()
            for i in range(rows):
                id_site = (self.ui.tablesite.item(i,0)).text()
                longi = (self.ui.tablesite.item(i,1)).text()
                lat = (self.ui.tablesite.item(i,2)).text()
                fibre = (self.ui.tablesite.item(i,3)).text()
                etudie = (self.ui.tablesite.item(i,4)).text()
                nodal = (self.ui.tablesite.item(i,5)).text()
                milieu = (self.ui.tablesite.item(i,6)).text()
            #for
     
     
                insert_sit= ("INSERT INTO site "
                        "(ID_SITE, LAT, LONGI, FIBRER, NODAL, ETUDIER, MILIEU)"
                        "VALUES (%s, %s, %s, %s, %s, %s, %s)")
                data_sit = (id_site, longi, lat, fibre, etudie, nodal, milieu)
                cursor.execute(insert_sit, data_sit)
            cnx.commit()
            cursor.close()
            cnx.close()
    et ça a marché
    et pour
    Attention, ce smiley est très péjoratif. Il signifie que tu considères que celui pour qui tu l'adresses a dit une grosse connerie...
    Désole j'ai pas fait attention ce que je voulais exprimer tt simplement c'est que je me suis bloquer

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    rebonjour ,mnt je vx extraire les données de la base des données vers un fichier excel je me suis bloquer avec se code qui me rend un fichier excel vide
    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
     
      def extraire_siteclicked(self):
            db = mysql.connector.connect(user='root', password='',
                                          host='localhost',
                                          database='bde01')
            cur = db.cursor()
            requete = ("SELECT * FROM site")
     
            cur.execute(requete)
     
     
     
            desc = cur.description
     
            book = xlwt.Workbook(encoding="utf-8")
            sheet1 = book.add_sheet("Python Sheet 1")
     
            sheet1.write(0, 0, desc[0][0])
            sheet1.write(0, 1, desc[1][0])
            sheet1.write(0, 2, desc[2][0])
            sheet1.write(0, 3, desc[3][0])
            sheet1.write(0, 4, desc[4][0])
            sheet1.write(0, 5, desc[5][0])
            sheet1.write(0, 6, desc[6][0])
     
            r =1
            for i in range(cur.rowcount):
                row = cursor.fetchone()
                sheet1.write(r,0, row[0])
                sheet1.write(r,1, row[1])
                sheet1.write(r,2, row[2])
                sheet1.write(r,3, row[3])
                sheet1.write(r,4, row[4])
                sheet1.write(r,5, row[5])
                sheet1.write(r,6, row[6])
                r  +=1
            fileName = QtGui.QFileDialog.getSaveFileName(self,"","",filter ="Excel (*.xls )")
     
            book.save(fileName)
    qu'est ce qui marche pas ds mon code d'aide SVP !!!

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kacimed Voir le message
    qu'est ce qui marche pas ds mon code d'aide SVP !!!
    Je ne sais pas ce qui ne fonctionne pas dans ton code. Mais personne ne pourra mieux t'aider que toi-même.
    Déjà commence par mettre des print() pour afficher/vérifier si les valeurs que tu sors de ta bdd sont correctes...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/07/2015, 14h25
  2. Réponses: 0
    Dernier message: 04/01/2012, 14h47
  3. Réponses: 6
    Dernier message: 19/05/2011, 16h02
  4. Réponses: 1
    Dernier message: 10/03/2011, 17h47
  5. Réponses: 7
    Dernier message: 05/05/2010, 19h48

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