Exercice 85
Créer un programme en langage Python qui prend en entrée un dictionnaire et qui crée une base de donnée SQLite3 nommée 'data.db' et au sein de laquelle une table sql nommée du même nom que le dictionnaire et ayant pour attributs les clés du dctionnaire. Finalement le script doit enregistrer les données du dictionnaire dans la table. Traiter à titre d'exemple le dictionnaire suivant:
1 2 3 4 5 6 7 |
students_data = [ {'id': 1, 'name': 'Rachid', 'email': 'rachid@gmail.com', 'section': 'mathématique'}, {'id': 2, 'name': 'Nadia', 'email': 'nadia@gmail.com', 'section': 'informatique'}, {'id': 3, 'name': 'Nathalie', 'email': 'nathalie@gmail.com', 'section': 'svt'}, {'id': 4, 'name': 'Alberto', 'email': 'alberto@gmail.com', 'section': 'HG'}, {'id': 5, 'name': 'Farid', 'email': 'farid@gmail.com', 'section': 'math'} ] |
Solution
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 45 |
import sqlite3 def create_database_and_table(data): # Nom de la base de données db_name = 'data.db' # Création d'une connexion à la base de données conn = sqlite3.connect(db_name) cursor = conn.cursor() try: # Création de la table avec les attributs du dictionnaire table_name = list(data[0].keys())[0] # Utilisation de la première clé comme nom de table columns = ', '.join(f"{key} TEXT" for key in data[0].keys()) create_table_query = f"CREATE TABLE {table_name} ({columns})" cursor.execute(create_table_query) # Insertion des données dans la table for entry in data: values = ', '.join(f"'{value}'" for value in entry.values()) insert_query = f"INSERT INTO {table_name} VALUES ({values})" cursor.execute(insert_query) # Validation et sauvegarde des modifications conn.commit() print(f"Base de données '{db_name}' créée avec succès, table '{table_name}' ajoutée et données enregistrées.") except sqlite3.Error as e: print(f"Erreur SQLite : {e}") finally: # Fermeture de la connexion conn.close() # Dictionnaire d'exemple students_data = [ {'id': 1, 'name': 'Rachid', 'email': 'rachid@gmail.com', 'section': 'mathématique'}, {'id': 2, 'name': 'Nadia', 'email': 'nadia@gmail.com', 'section': 'informatique'}, {'id': 3, 'name': 'Nathalie', 'email': 'nathalie@gmail.com', 'section': 'svt'}, {'id': 4, 'name': 'Alberto', 'email': 'alberto@gmail.com', 'section': 'HG'}, {'id': 5, 'name': 'Farid', 'email': 'farid@gmail.com', 'section': 'math'} ] # Appel de la fonction avec le dictionnaire d'exemple create_database_and_table(students_data) |
Younes Derfoufi
CRMEF OUJDA