Exercice 8 || Solution
1. Formuler la requête SQL permettant de créer une table SQLite3 nommée 'cars' au sein d'une base de données 'vehicles.db'. La table doit avoir les attributs suivants :
- id : clé primaire auto-incrémentée,
- marque : de type texte,
- model : de type texte,
- year: de type entier.
3. Donnez le code complet en Python.
4. Donnez la requête qui permet d'altérer la table 'cars' en ajoutant à la fin un attribut nommé 'price' de type entier.
5. Ecrire le code Python permettant d'insérer les données suivantes :
1 |
data = [('Toyota', 'Corolla', 2018, 15000), ('Honda', 'Civic', 2019, 17000), ('Ford', 'Focus', 2017, 12000), ('Chevrolet', 'Malibu', 2019, 18000), ('Nissan', 'Altima', 2016, 14000), ] |
6. Donnez le code Python qui affiche les données.
7. Donner le code Python qui export les données sur un fichier data.csv
Solution
Question 1 : requete pour créer la table SQLite
1 2 3 4 5 6 7 8 9 10 |
# création de la base de donnée sqlite3.connect('vehicles.db') # requete de création de la table cars req = """CREATE TABLE IF NOT EXISTS cars( id INTEGER PRIMARY KEY AUTOINCREMENT, marque TEXT, model TEXT, year INTEGER )""" |
Question 2 et 3 : Code complet en Python
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 |
import sqlite3 # Créer une connexion conn = sqlite3.connect("vehicles.db") # Créer un curseur cursor = conn.cursor() # requete de création de la table cars req = """CREATE TABLE IF NOT EXISTS cars( id INTEGER PRIMARY KEY AUTOINCREMENT, marque TEXT, model TEXT, year INTEGER )""" # requete pour altérer la table cars en ajoutant la colonne price alteration = "ALTER TABLE cars ADD column `price` INTEGER" # exécuter les requetes cursor.execute(req) cursor.execute(alteration) # envoyer la requete conn.commit() # fermer la connexion conn.close() |
Question 4 : Code d'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 conn = sqlite3.connect('vehicles.db') cursor = conn.cursor() data = [('Toyota', 'Corolla', 2018, 15000), ('Honda', 'Civic', 2019, 17000), ('Ford', 'Focus', 2017, 12000), ('Chevrolet', 'Malibu', 2019, 18000), ('Nissan', 'Altima', 2016, 14000), ] # créer une boucle à travers les données for row in data: # création de la requete d'insertion des données req = """Insert INTO cars (`marque`, `model`, `year`, `price`) VALUES (?, ?, ?, ?)""" # exécution de la requete cursor.execute(req, (row[0], row[1], row[2], row[3])) # Envoyer les requete conn.commit() conn.close() |
Question 5 : 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 |
import sqlite3 conn = sqlite3.connect('vehicles.db') cursor = conn.cursor() # selection de la totalité des données de la table cars req = "SELECT * FROM cars" cursor.execute(req) # récupération des données de la requete data = cursor.fetchall() conn.commit() conn.close() # Affichage des données for row in data: print("ID : " , row[0]) print("Marque : " , row[1]) print("Model : " , row[2]) print("Year : " , row[3]) print("Price : " , row[4]) print("-----------------------") |
Question 6 : Exporter les données sur un fichier 'data.csv'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import sqlite3 import csv # Connexion à la base de données SQLite conn = sqlite3.connect('vehicles.db') cursor = conn.cursor() # Sélection de toutes les données de la table 'cars' cursor.execute('SELECT * FROM cars') # Récupération des résultats results = cursor.fetchall() # Écriture des résultats dans un fichier CSV with open('data.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['id', 'marque', 'model', 'year', 'price']) # Écriture de l'en-tête writer.writerows(results) # Écriture des données # Fermeture de la connexion conn.close() |
Younes Derfoufi
CRMEF OUJDA