Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insert d'une data dans une BDD via l'input Python

Et comment autoriser seulement une donnée non existante SQLite3

    30 juillet 2021 à 20:01:14

    Bonjour !

    Mon dernier topic a été censuré (considéré comme SPAM) alors même que c'est moi qui l'ai faite... bot ou modérateur ? Enfin passons...

    J'ai trois soucis avec un programme que j'aimerais coder :

    1/ J'aimerais pouvoir insert une donnée dans une base de donnée SQLite3 sans taper manuellement mais via l'input de python. Mais lorsqu'au lieu de mettre le nom de l'utilisateur moi-même, je met la nom de la fonction input, elle ne le considère pas (ex : si je met user = input(tapez votre nom) et que dans (INSERT INTO  [...] "user"), la base de donnée enregistre le mot "user" comme donnée et non la réponse de la question...

    2/ Je dois aussi incrémenter par n+1 chaque utilisateur si son nom figure déjà dans la base de donnée (ex : si Laurie existe déjà, le programme remplace automatiquement par Laurie1, si Laurie2 existe ce sera Laurie3 etc...). Mais comment faire en sorte que ce bout de code sache que le nom figure/ne figure pas dans la base de donnée ?

    Voilà une ébauche de ce que j'ai commencé à faire. Évidemment c'est faux mais c'est juste pour vous montrer ce que j'ai commencé à faire en étant bloqué !

    import sqlite3
    
    connection_db = sqlite3.connect("logins.db") 
    cursor_db = connection_db.cursor()
    
    while user_generator:
        new_user = input("Créez votre identifiant")
        def alt_login(new_user):
            if new_user = False 
                print("Votre identifiant existe déjà")
                new_user2 = new_user + 1
            elif new_user2 = False
                print("Votre identifiant existe déjà")
                new_user3 = new_user2 += 1 # alors new_user2 rajoute de 1
        continue
    
    if (alt_login(new_user)):
        print("Votre identifiant a bien été pris en compte")
        
    user_name = (cursor_db.lastrowid, "new_user")
    cursor_db.execute('INSERT INTO matrice_users VALUES(?,?)', user_name)
    connection_db.commit()
    print("Nouvel utilisateur ajouté")  
    
    connection_db.close()


    Je sais qu'il doit me manquer des connaissances / fonctions / modules mais je ne sais pas lesquels et tous les forums sur lesquels je vais ne donnent que l'entrée "manuel" des données dans la base de donnée. J'avoue je sèche...

    Merci d'avance pour votre aide ! (En espérant que le sujet ne soit pas considéré comme spam :):)

    -
    Edité par Kamal_Guidadou 30 juillet 2021 à 20:04:55

    • Partager sur Facebook
    • Partager sur Twitter

    -- Codez et le code vous rendra le virtuel réél --

    Anonyme
      1 août 2021 à 9:10:43

      Salut,

      Je suppose que ta DB "logins.db" contient une table "matrice_users qui elle-même contient une colonne "ID" et "new_user"

      Pour ce qui est de la 2ᵉ partie, je ne me prendrais pas la tête, si l'identifiant existe déjà, c’est de demander à l'utilisateur d'en saisir un différent... 

      import sqlite3
      
      connection_db = sqlite3.connect("logins.db")
      cursor_db = connection_db.cursor()
      
      user = input("Créez votre identifiant")
      
      cursor_db.execute("SELECT rowid FROM matrice_users WHERE new_user = ?", (user,))
      data = cursor_db.fetchall()
      
      if len(data) != 0:
          print(f"L'identifiant {user} existe dèjà !!!")
      else:
          cursor_db.execute("INSERT INTO matrice_users VALUES (null, ?)", (user,))
          connection_db.commit()
          print("Nouvel utilisateur ajouté")
      
      for row in cursor_db.execute("SELECT * FROM matrice_users"):
          print(row)
          
      connection_db.close()
      





      -
      Edité par Anonyme 1 août 2021 à 9:15:13

      • Partager sur Facebook
      • Partager sur Twitter

      Insert d'une data dans une BDD via l'input Python

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown