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

Interfaçage autre langage Python Discussion :

Vérifier si une entrée existe MySQL [Python 3.X]


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Vérifier si une entrée existe MySQL
    Bonjour, je cherche a vérifier si une entrée existe déjà dans la base de donnée afin d'éviter les doublons. Ma base de donnée contient que des 1 ou des 0, car je compte le nombre des passage sur plusieurs détecteurs. Ce qui est différent c'est qu'a chaque entrée, j'inclus un datetime. Pour éviter qu'un détecteur enregistre 2 fois la même donnée, j'aimerais vérifier si il y a un datetime identique dans la base de donnée, si oui, on enregistre pas la donnée et si non, on enregistre. Pour simplifier la chose, je me suis concentré sur les secondes des 5 dernières entrée de ma base de données. Si dans les 5 dernières entrées il existe la même seconde, je ne veux pas enregistrer la donnée, car c'est une erreur. C'est impossible de passer 2 fois dans la même seconde. Je crois que je ne suis pas loin, mais mon code ne fonctionne pas. Est-ce que quelqu'un peut m'aider. Voici mon 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
     # on verifie s'il existe deja un enregistrement pour éviter les doublons - date
            cursor.execute("SELECT second(moment) FROM sauts ORDER BY moment DESC LIMIT 5")
            verif = list(cursor)
            print(verif)
            liste1 = list(sum(verif, ())) #transforme la réponse de tuple en liste
            print("liste1")
            print(liste1)
     
            seconde = (time.strftime("%-S")) # récupère les secondes actuel dans une variable
            print("Seconde")
            print (seconde)        
            if len(liste1) == 0: # si la liste est vide essai d'entrée une donnée
                try:
                        print("liste vide insertion premiere donnee")
                        sql = "INSERT INTO sauts (piste1, piste2, piste3, piste4, piste5, moment) VALUES (%s, %s, %s, %s, %s, %s)"
                        val = (pieces[0], pieces[1], pieces[2], pieces[3], pieces[4], moment)
                        cursor.execute(sql, val)
                        db.commit()
                        print("Data inséré")
                        print(moment)
                        cursor.close()                 
                except MySQLdb.IntegrityError:
                       print("echec de transmission")
                finally:
                        cursor.close()
            else:
                for seconde in liste1:  # vérifie si la variable seconde existe dans la liste
                    if seconde in liste1 == True:    # si elle existe  C'EST ICI QUE MON CODE NE FONCTIONNE PAS, IL PASSE AU ELSE
                        print("l'enregistrement existe deja")
                        cursor.close()    
                    else: 
                        try:
                            print("in a pas fonctionne")
                            sql = "INSERT INTO sauts (piste1, piste2, piste3, piste4, piste5, moment) VALUES (%s, %s, %s, %s, %s, %s)"
                            val = (pieces[0], pieces[1], pieces[2], pieces[3], pieces[4], moment)
                            cursor.execute(sql, val)
                            db.commit()
                            print("Data inséré")
                            print(moment)
                            cursor.close()                 
                        except MySQLdb.IntegrityError:
                            print("echec de transmission")
                        finally:
                            cursor.close()

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

    Citation Envoyé par Boudha25 Voir le message
    je cherche a vérifier si une entrée existe déjà dans la base de donnée afin d'éviter les doublons.
    Vous pourriez ajouter à la date la contrainte UNIQUE.
    Si on essaie alors d'insérer une ligne avec la même date, çà remontera une exception gérée par try...except...

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

  3. #3
    Membre à l'essai Avatar de Boudha25
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Vérifier si une entrée existe MySQL
    Merci de ta réponse, je n'avais pas penser a cet attribut. Parfois il faut un peu de recul pour trouver une solution. Ton idée fonctionne a merveille.

    Citation Envoyé par wiztricks Voir le message
    Salut,



    Vous pourriez ajouter à la date la contrainte UNIQUE.
    Si on essaie alors d'insérer une ligne avec la même date, çà remontera une exception gérée par try...except...

    - W

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/09/2018, 14h16
  2. [MySQL] vérifier si une entrée existe dans une table
    Par dafchap dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/11/2016, 16h51
  3. Réponses: 2
    Dernier message: 30/04/2012, 00h25
  4. Réponses: 2
    Dernier message: 21/05/2007, 18h55
  5. Oracle 9i : Vérifier qu'une ligne existe
    Par Fatah93 dans le forum Oracle
    Réponses: 4
    Dernier message: 14/06/2005, 12h27

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