Exercice 9
TP Python SQLite3: gestion d'une biliothèque
1. Donner la requête SQL qui permet de créer une table SQLite nommée 'books' au sein d'une base de données 'library.db'. La table doit avoir les attributs suivants :
- id : clé primaire auto-incrémentée,
- title : de type texte,
- author : de type texte,
- year : de type entier.
Donnez ensuite le code complet en Python.
2. Donnez la requête qui permet d'altérer la table 'books' en ajoutant à la fin un attribut nommé 'price' de type réel.
3. Donnez le code Python pour insérer les données suivantes :
1 2 3 4 5 6 7 |
liste_ouvrages = [{'Title': "Apprendre Python 3 avec Minecraft", 'Author': 'David Whale', 'Year': 2018, 'Price': 24.90}, {'Title': 'Le grand livre de Python : POO & GUI', 'Author': 'Gilles Dowek', 'Year': 2017, 'Price': 39.90}, {'Title': 'Programmer en C pour les nuls', 'Author': 'Dan Gookin', 'Year': 2020, 'Price': 24.90}, {'Title': 'JavaScript pour les nuls', 'Author': 'Chris Minnick, Eva Holland', 'Year': 2017, 'Price': 24.90}, {'Title': 'Cybernétique et intelligence des machines', 'Author': 'Norbert Wiener', 'Year': 1948, 'Price': 9.90}, {'Title': 'Blockchain pour les nuls', 'Author': 'Tiana Laurence', 'Year': 2018, 'Price': 29.90} ] |
4. Donnez le code Python qui affiche les données.
5. Donner la requête SQL puis le code Python qui met à jour la table 'books' en ajoutant une hausse des prix de 5%.
6. Altérer la table 'books' en ajoutant une colonne à la fin nommée 'stock' du type texte et insérer la valeur 'In Stock' pour tous les livres.
7. Modifier le stock pour le livre 'Programmer en C pour les nuls' et y mettre la valeur 'Out Of Stock'
Solution
Question 1 : Création de la table books
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # requête de création de la table req = """CREATE TABLE IF NOT EXISTS `books` ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT author TEXT, year INTEGER )""" # Envoyer la requête cursor.execute(req) conn.commit() conn.close() |
Question 2 : Altération de la table 'books'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # requête d'altération de la table req = """ALTER TABLE `books` ADD COLUMN `price` REAL""" # Exécuter la requête cursor.execute(req) conn.commit() conn.close() |
Question 3 : 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 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() liste_ouvrages = [{'Title': "Apprendre Python 3 avec Minecraft", 'Author': 'David Whale', 'Year': 2018, 'Price': 24.90}, {'Title': 'Le grand livre de Python : POO & GUI', 'Author': 'Gilles Dowek', 'Year': 2017, 'Price': 39.90}, {'Title': 'Programmer en C pour les nuls', 'Author': 'Dan Gookin', 'Year': 2020, 'Price': 24.90}, {'Title': 'JavaScript pour les nuls', 'Author': 'Chris Minnick, Eva Holland', 'Year': 2017, 'Price': 24.90}, {'Title': 'Cybernétique et intelligence des machines', 'Author': 'Norbert Wiener', 'Year': 1948, 'Price': 9.90}, {'Title': 'Blockchain pour les nuls', 'Author': 'Tiana Laurence', 'Year': 2018, 'Price': 29.90} ] for data in liste_ouvrages: req = "INSERT INTO `books` (title, author, year, price) VALUES (?, ?, ?, ?)" cursor.execute(req, (data['Title'], data['Author'], data['Year'], data['Price'] )) conn.commit() conn.close() |
Question 4 : 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 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # Création de la requête de selection req = "SELECT * FROM `books`" cursor.execute(req) # récupération des données data = cursor.fetchall() conn.commit() conn.close() # parcourir et afficher les données du tableau counter = 1 for row in data: print("Livre", counter, '\n') print('ID : ', row[0]) print('Titre : ', row[1]) print('Auteur : ', row[2]) print('Année : ', row[3]) print('Prix : ', row[4], "Euros") print('\n----------------------------\n') counter = counter + 1 |
Question 5 : Mettre à jour la table 'books' en ajoutant une hausse des prix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import sqlite3 # créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # créer la requete de mise à jour de la colonne 'price' req = """UPDATE books SET price = price + 0.05*price""" # exécuter la requete cursor.execute(req) # appliquer les modifications conn.commit() conn.close() |
Question 6 : Altération de la table 'books' en ajoutant une colonne 'stock'
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 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # Requête pour ajouter une nouvelle colonne 'stock' de type TEXT à la table 'books' alter_query = """ALTER TABLE books ADD COLUMN stock TEXT""" # Exécuter la requête ALTER TABLE cursor.execute(alter_query) # Requête pour mettre à jour la nouvelle colonne 'stock' avec la valeur 'In Stock' update_query = """UPDATE books SET stock = 'In Stock'""" # Exécuter la requête UPDATE cursor.execute(update_query) # Commit des modifications conn.commit() # Fermer la connexion conn.close() |
Question 7 : Modification de la valeur du stock
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import sqlite3 # Créer une connexion conn = sqlite3.connect('library.db') # créer un curseur cursor = conn.cursor() # Mettre à jour le livre 'Programmer en C pour les nuls' update_req = """UPDATE books SET stock = 'Out of stock' WHERE title='Programmer en C pour les nuls' """ # Exécuter la requête UPDATE cursor.execute(update_req) # Commit des modifications conn.commit() # Fermer la connexion conn.close() |
Younes Derfoufi
CRMEF OUJDA