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 :

Suppression de donnée dans une base SQLite3 [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 40
    Points : 25
    Points
    25
    Par défaut Suppression de donnée dans une base SQLite3
    Bonjour à tous,

    J'ai un programme de gestion de base de donnée avec une bdd SQLite3 qui comporte 3 tables. je peux les afficher chacune via un menubar dans un treeview. Quand je sélectionne une ligne dans le treeview et que je clic sur le bouton "delete" elle est supprimée de la bdd.
    Je n'ai pas de problème tous fonctionne parfaitement. Sauf que j'aimerai savoir si quelqu'un pourrait arranger mon code que je trouve un peu redondant sur les lignes 5, 6 et 7 ........
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def delete_button():
        idSelect = tree.item(tree.selection())["values"][0]
        conn = sqlite3.connect('data/database.db')
        cursor = conn.cursor()
        cursor.execute("DELETE FROM parts_inventory WHERE id = {}".format(idSelect))
        cursor.execute("DELETE FROM tools_inventory WHERE id = {}".format(idSelect))
        cursor.execute("DELETE FROM consumables_inventory WHERE id = {}".format(idSelect))
        conn.commit()
        tree.delete(tree.selection())
        conn.close()
    merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    bonjour,

    il faut éviter d'utiliser format ou de concaténer les requêtes toi même, ça évitera les injections sql.

    Il serait plus approprié d'utiliser des relations et de faire un delete on cascade, pour vulgarisé c'est comme si vous aviez un sac avec un numéro dessus, et des patates avec une étiquette indiquant le numéro de sac, quand on supprimé un sac ça supprime les patates associées ... bon bien sur cette analogie est limitée puisque par ce que un sac avec des patates "virtuellement" dedans via des étiquettes mais pas physiquement c'est totalement con, mais en SQL ça ne l'ai pas, ça se traduit par des relation avec des foreign key.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup pour la réponse je vais aller voir ça de plus près et reviendrait poster ce qui fonctionne avant de mettre le sujet "résolu". Par contre si tu as un exemple suis preneur .....

  4. #4
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    pour éviter les injections SQL: https://docs.python.org/3.8/library/sqlite3.html (4ème codeblock, pas d'ancre ....)



    pour ce qui est de la structure de la base de donnée il faudrait savoir la structure actuelle de ta base, les relations entres les tables

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    pour ce qui est de la structure de la base de donnée il faudrait savoir la structure actuelle de ta base, les relations entres les tables
    elles n'ont aucune liaison je me sert d'une GUI pour les gérer une après l'autre jamais en même temps

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Fred973 Voir le message
    elles n'ont aucune liaison je me sert d'une GUI pour les gérer une après l'autre jamais en même temps
    Certes mais balayer toutes les tables pour y supprimer les lignes qui ont un identifiant donné (lorsqu'il en existe)... fait partie de "gérer" et montre un "en même temps"...

    Quelque part, vous avez un soucis de conception... mais vous pouvez très bien vivre avec sans que votre vie soit en péril.

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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2020
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    oui je comprends en effet les lignes avec le même id seront supprimées de toutes les tables ....... il va falloir y remédier merci beaucoup pour votre aide. Je vais séparer par des fonctions différentes pour gérer chaque tables uniquement.

  8. #8
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    ce n'est pas la question, il sera plus judicieux de nous donner le contexte, voir même une capture d'écran de votre programme ça pourrait nous aider à comprendre.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2017, 10h54
  2. Suppression de tables dans une base de données Mysl
    Par Furius dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/06/2013, 10h34
  3. Suppression et modification de données dans une base Access depuis VB6
    Par sousousoumia dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/09/2012, 00h42
  4. Réponses: 3
    Dernier message: 03/07/2008, 14h32
  5. Recherche classe pour ajout/modif/suppression d'articles dans une base de donnée
    Par will89 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/02/2007, 11h59

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