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()