Python et bases de données 1#

Dans cette partie, vous allez apprendre à utiliser Python pour accéder à une base de données et faire des requêtes SQL.

La base de données à disposition est représentée par le schéma relationnel suivant:

Schéma relationnel de la base de données music

Recherche de données dans la base de données#

La recherche de données se fait en trois étapes:

  • Connexion à la base de données (à effectuer une fois au début du programme):

    base_donnees = sqlite3.connect("nom_de_la_base")
    
  • Exécution de la requête de sélection

    requete = base_donnees.execute("requete_selection")
    
  • Demande des données obtenues grâce à la requête

    resultats = requete.fetchall()
    

Par exemple:

base_donnees = sqlite3.connect("music")
requete = base_donnees.execute("select * from artist;")
resultats = requete.fetchall()

Affichage des résultats#

Le résultat est une liste dans laquelle il y a des tuples (qui fonctionnent comme des listes mais sont entourées de parenthèses au lieu des crochets) avec les résultats:

[('Taylor Swift', 'United States', 'Big Machine Records'),
('The Beatles', 'United States', NULL),
('Galantis', 'Sweden','Big Beat Records'),
('Rihanna', 'Barbados', 'Def Jam Recordings'),
('Alessia Cara', 'Canada', 'Def Jam Recordings'),
('Khalid', 'United States', 'RCA Records'),
('Coldplay', 'United Kingdom', 'Parlophone')]

Il est ensuite possible d'afficher chaque résultat à l'aide d'une boucle:

for resultat in resultats:
  print(resultat)

Le code ci-dessus affichera:

('Taylor Swift', 'United States', 'Big Machine Records')
('The Beatles', 'United States', NULL)
...
('Khalid', 'United States', 'RCA Records')
('Coldplay', 'United Kingdom', 'Parlophone')

Comme le résultat est une liste, il est tout à fait possible d'accéder directement à chaque élément grace à son index:

for resultat in resultats:
  print("Nom:", resultats[0], "Pays:", resultats[1], "Label:", resultats[2])

Le code ci-dessus affichera:

Nom: Taylor Swift Pays: United States Label: Big Machine Records
...

Pour les exercices suivants, vou allez travailler dans Visual Studio Code.

Exercice 1#

Sauvegarde du fichier main.py:

  1. Créez un dossier music sur OneDrive dans votre dossier Informatique.

  2. Téléchargez le fichier main.py et sauvegardez-le dans le dossier music.

  3. Démarrez VSCode et ouvrez le dossier music que vous avez créé sur OneDrive.

Création de la base de données:

  1. Dans le dossier music, créez un nouveau fichier music.sqlite.

  2. Ouvrir la base de données avec Open Database (clic droit).

  3. Cliquez sur SQLITE EXPLORER et sélectionnez New Query en face de music.sqlite.

  4. Un nouveau fichier s'est ouvert SQLite Untitled-1. Dans ce fichier, copiez le code ci-dessous.

  1. Sélectionnez Run Query (clic droit).

Exercice 2#

Maintenant que la base de données a été créée, vous allez pouvoir faire des requêtes.

Complétez le programme pour qu'il affiche les informations des artistes précédées du nom des colonnes (nom, pays et label).

Exécutez votre code pour vérifier votre réponse.

Exercice 3#

Complétez le programme pour qu'il affiche la liste de tous les albums précédés du nom des colonnes (nom et année).

Exercice 4#

Complétez le programme pour qu'il affiche la liste de toutes les chansons chantées par Taylor Swift.

Exercice 5#

Complétez le programme pour qu'il affiche la liste de toutes les chansons, de leur interpète et le nom de l'album qui sont du genre hip-hop.

Ajout de données dans la base de données#

L'ajout de données se fait en trois étapes:

  • Connexion à la base de données (à effectuer une fois au début du programme):

    base_donnees = sqlite3.connect("nom_de_la_base")
    

    Par exemple:

    base_donnees = sqlite3.connect("music")
    
  • Exécution de la requête d'ajout

    base_donnees.execute("requete_ajout")
    

    Par exemple:

    base_donnees.execute("insert into song values ('Leave Right Now', 2017, 'Life Changes', 'country');")
    
  • Écriture dans la base de données (à effectuer à la fin de toutes les requêtes)

    base_donnees.commit()
    

Exercice 6#

  1. Ajoutez dans la table song, la chanson Leave Right Now sortie en 2017 de l'album Life Changes de genre country.

  2. Ajoutez dans la table sings que la chanson Leave Right Now est chantée par Thomas Rhett.

  3. Affichez toutes les chansons chantées par Thomas Rhett pour vérifier que votre ajout a bien fonctionné.

Exercice 7#

Quand on recherche quelque chose qui n'existe pas dans la base de données, celle-ci retourne comme résultat une liste vide [].

Avant d'ajouter des informations dans une table, il est préférable de vérifier que ces informations n'y sont pas déjà.

if resultats == []:
  # Ajout des informations
else:
  print("Ces informations existent déjà.")
  1. Ajoutez dans la table song, la chanson Blood sortie en 2017 de l'album DAMN. de genre hip-hop.

  2. Ajoutez dans la table sings que la chanson Blood est chantée par Kendrick Lamar.

  3. Affichez toutes les chansons chantées par Kendrick Lamar pour vérifier que votre ajout a bien fonctionné.

Exercice 8#

Essayez d'ajouter Kendrick Lamar des United States et du label Top Dawg Entertainment dans la table. Vous devriez recevoir comme message que "ces informations existent déjà".