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


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    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
    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
    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

###raw>template_hook.ano_emploi###