Exercice 6
On considère la liste suivante qui contient les données des étudiants sous forme de dictionnaires python:
1 2 3 4 5 6 |
Students_data = [{"Name" :"Farid", "Email": 'farid@gmail.com', "Section": "Math" } , {"Name" : "Najat", "Email" : 'najat@gmail.com', "Section": "Info"} , {"Name" : "Hafid", "Email": , 'hafid@gmail.com', "Section": "HG"} , {"Name" : "Nathalie","Email": 'nathalie@gmail.com', "Section": "Sc Eco" } , {"Name" : "Majid", "Email": 'majid@gmail.com', "Section": "SVT"} , {"Name" : "Alberto","Email": 'alberto@gmail.com', "Section": "Physique"} ] |
- Création de la base de données SQLite: Ecrire un programme Python qui permet de créer une base de données SQLite nommée 'data.db' au sein de laquelle une table SQLite nommée 'students' ayant les mêmes attributs que la liste des données 'Students_data' ci-dessus: 'name', 'email', 'section' sans oublier la clée primaire 'id autoincrement.
- Insertion des données : Ecrire un autre programme qui permet d'insérer les données de la liste 'Students_data' dans la table SQLite 'students'.
- Affichage des données : Ecrire un programme qui permet d'afficher les données depuis la table SQLite 'students'.
Solution
Question 1 : Création de la base de données SQLite
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import sqlite3 # Question 1 : Créer la base de données SQLite et la table 'students' def create_database_table(): conn = sqlite3.connect('data.db') cursor = conn.cursor() # Création de la table 'students' cursor.execute(''' CREATE TABLE IF NOT EXISTS students ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT, section TEXT ) ''') conn.commit() conn.close() create_database_table() |
En utilisant un lecteur ou un gestionnaire spécifique des bases de données SQLite comme DB Browser For SQLite, on observe qu'il a effectivement une base de données crée avec le nom data.db' et au sein de laquelle une table SQLite nommée 'students':
Question 2 : Insertion des données
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 |
import sqlite3 # Étape 2 : Insérer les données de la liste 'Students_data' dans la table 'students' def insert_data(): conn = sqlite3.connect('data.db') cursor = conn.cursor() Students_data = [ {"Name": "Farid", "Email": 'farid@gmail.com', "Section": "Math"}, {"Name": "Najat", "Email": 'najat@gmail.com', "Section": "Info"}, {"Name": "Hafid", "Email": 'hafid@gmail.com', "Section": "HG"}, {"Name": "Nathalie", "Email": 'nathalie@gmail.com', "Section": "Sc Eco"}, {"Name": "Majid", "Email": 'majid@gmail.com', "Section": "SVT"}, {"Name": "Alberto", "Email": 'alberto@gmail.com', "Section": "Physique"} ] for student in Students_data: cursor.execute(''' INSERT INTO students (name, email, section) VALUES (?, ?, ?) ''', (student["Name"], student["Email"], student["Section"])) conn.commit() conn.close() insert_data() |
Et maintenant en cliquant sur le bouton actualiser, on observe les données au sein de la table 'students':
Question 3 : Affichage des données
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 |
import sqlite3 # Étape 3 : Afficher les données de la table 'students' def display_data(): conn = sqlite3.connect('data.db') cursor = conn.cursor() cursor.execute('SELECT * FROM students') rows = cursor.fetchall() print("Liste des étudiants :") for row in rows: print(f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}, Section: {row[3]}") conn.close() # Appeler les fonctions pour créer la base de données, insérer les données et afficher les données display_data() """ output: Liste des étudiants : ID: 1, Name: Farid, Email: farid@gmail.com, Section: Math ID: 2, Name: Najat, Email: najat@gmail.com, Section: Info ID: 3, Name: Hafid, Email: hafid@gmail.com, Section: HG ID: 4, Name: Nathalie, Email: nathalie@gmail.com, Section: Sc Eco ID: 5, Name: Majid, Email: majid@gmail.com, Section: SVT ID: 6, Name: Alberto, Email: alberto@gmail.com, Section: Physique """ |
Younes Derfoufi
CRMEF OUJDA