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 :

selectionner a row dans qlistwidget puis leffacer dans une base de donnee sqlite3


Sujet :

PyQt Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 1
    Par défaut selectionner a row dans qlistwidget puis leffacer dans une base de donnee sqlite3
    je n'arrive pas a effacer le row que j'ai selectionner dans le qlistwidget de la base de donnee (sqlite3). j'utulise python pyqt4.

    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
    self.conn = sqlite3.connect(db)
            self.cur = self.conn.cursor()
            self.cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title TEXT, "
                        "author TEXT, year INTEGER, isbn INTEGER)")
            self.conn.commit()
     
    def insert(self,title, author, year, isbn):
            #the NULL parameter is for the auto-incremented id
            self.cur.execute("INSERT INTO book VALUES(NULL,?,?,?,?)", (title,author,year,isbn))
            self.conn.commit()
     
    def delete(self,id):
            self.cur.execute("DELETE FROM book WHERE id = ?", (id,))
            self.conn.commit()
            #conn.close()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 695
    Par défaut
    Salut,

    Citation Envoyé par ambrozini Voir le message
    je n'arrive pas a effacer le row que j'ai selectionner dans le qlistwidget de la base de donnee (sqlite3). j'utulise python pyqt4.
    "je n'arrive pas" ne dit rien sur les difficultés rencontrées, d'autant que vous ne postez pas le code Qt qui va avec: comment vous aider avec aussi peu d'informations?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si tu veux gérer une base de données (consulter, modifier, ajouter, supprimer), à partir d'un objet graphique Qt, ça ne marche pas comme ça.

    Il faut déjà prendre un objet graphique cohérent avec les tables des bases de données. Mais justement, QListWidget a une structure arborescente (comme les répertoires d'un disque), alors qu'une table de base de données a une structure de tableau (comme avec un tableur). De plus, la terminaison "Widget" signifie que cet objet graphique n'est pas fait pour être en relation "automatique" avec une base de données. C'est donc plutôt un "QTableView" qu'il faut prendre, et qui pourra afficher sur demande chacune des tables de la base de données.

    Ensuite, on ne donne pas d'instructions directes à la base de données comme tu as fait, sauf peut-être pour la créer, mais on peut la créer aussi avec Qt. L'objet graphique QTableView est lié à la base de données par un "modèle" (comme QtSql.QSqlRelationalTableModel), et c'est lui qui permettra de mettre à jour automatiquement la base de données, des modifications faites par l'utilisateur sur le tableau graphique.

    Dans des cas plus complexes, on peut utiliser aussi un proxy (comme QtCore.QSortFilterProxyModel) pour chercher/trier les tables de la base avec n'importe quel critère, et un "delegate" (comme QtSql.QSqlRelationalDelegate) pour ajouter des widgets particuliers dans chaque case du tableau (case à cocher, combobox, etc...).

    A noter qu'on peut aussi utiliser ce même objet graphique QTableView pour afficher le résultat d'un script d'extraction SQL, il suffit dans ce cas que le script SQL fabrique une table temporaire, et c'est elle qui sera affichée. Mais dans ce cas, on ne peut pas faire de modification sur la base de données à partir de cet affichage, puisqu'on ne modifierait que la table temporaire!

    Ce genre de programmation est plutôt complexe, et sa réussite dépendra de ta compétence actuelle en programmation et... de ton courage. Mais quand on réussit ce genre de programme, c'est beau, pratique et puissant!

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/05/2015, 15h31
  2. Réponses: 1
    Dernier message: 28/03/2014, 10h31
  3. [VB6]Lecture dans fichier puis récuperation dans un tableur
    Par Pexou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 07/06/2013, 14h28
  4. Réponses: 6
    Dernier message: 01/02/2013, 13h37
  5. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06

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