Démonstration de l'usage de l'API Sqlite3 pour encoder des élèves.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

77 lignes
2.8 KiB

  1. import sqlite3
  2. from utils import print_table
  3. db = sqlite3.connect('ecole.sqlite3')
  4. cursor = db.cursor()
  5. cursor.execute("""CREATE TABLE IF NOT EXISTS eleves(
  6. ID_Eleve INTEGER PRIMARY KEY AUTOINCREMENT,
  7. Prenom TEXT,
  8. Nom TEXT,
  9. UNIQUE (Prenom, Nom));
  10. """)
  11. while True:
  12. choix = input("\nVeuillez choisir une action à réaliser [A]jouter, [L]ister, " \
  13. "[M]odifier, [S]upprimer, [Q]uitter : ")
  14. if choix == "":
  15. continue
  16. if choix[0] in 'lL':
  17. cursor.execute("""SELECT * FROM eleves ORDER BY ID_eleve;""")
  18. liste_eleves = cursor.fetchall()
  19. titres = ['Id', 'Prénom', 'Nom']
  20. liste_eleves.insert(0, titres)
  21. print_table(liste_eleves)
  22. if choix[0] in 'aA':
  23. prenom = input("\nVeuillez entrer un prenom : ").capitalize()
  24. nom = input("Veuillez entrer un nom : ").upper()
  25. if prenom=="" or nom=="":
  26. print('Vous devez renseigner le nom et le prénom')
  27. continue
  28. else:
  29. try:
  30. cursor.execute("""INSERT INTO eleves(prenom, nom)
  31. VALUES(?,?);""",
  32. (prenom, nom))
  33. db.commit()
  34. except sqlite3.IntegrityError:
  35. print(f"{prenom} {nom} existe déjà dans la base de données")
  36. if choix[0] in 'mM':
  37. id_eleve = input("Veuillez entrez l'identifiant de l'élève à modifier : ")
  38. cursor.execute("""SELECT prenom, nom FROM eleves WHERE ID_Eleve=?""", (id_eleve,))
  39. prenom, nom = cursor.fetchone()
  40. n_prenom = input(f"\nVeuillez entrer un prenom (actuellement {prenom}): ")
  41. n_nom = input(f"Veuillez entrer un nom (actuellement {nom}): ")
  42. if n_prenom:
  43. prenom = n_prenom
  44. if n_nom:
  45. nom = n_nom
  46. try:
  47. cursor.execute("""UPDATE eleves
  48. SET prenom=?,
  49. nom=?
  50. WHERE ID_Eleve=?;""",
  51. (prenom.capitalize(), nom.upper(), id_eleve))
  52. db.commit()
  53. except sqlite3.IntegrityError:
  54. print(f"{prenom} {nom} existe déjà dans la base de données")
  55. if choix[0] in 'sS':
  56. id_eleve = input("Veuillez entrez l'identifiant de l'élève à supprimer : ")
  57. cursor.execute("""SELECT prenom, nom FROM eleves WHERE ID_Eleve=?""", (id_eleve,))
  58. prenom, nom = cursor.fetchone()
  59. confirmation = input(f"Confirmez-vous la suppression de {prenom} {nom} ? [O/n] : ")
  60. if not confirmation=='n':
  61. cursor.execute("""DELETE FROM eleves WHERE ID_Eleve=?""",(id_eleve,))
  62. db.commit()
  63. if choix[0] in 'qQ':
  64. break
  65. print('Bye !')
  66. db.close()