Sélectionner des données d'une table : SQL brut
Comme vous l'avez vu dans la vidéo, pour accéder aux données de la base et les manipuler, il faut d'abord établir une connexion en appelant la méthode .connect() sur le moteur. En effet, la fonction create_engine() que vous avez utilisée plus tôt retourne une instance de moteur, mais elle n'ouvre pas réellement de connexion tant qu'une action qui en a besoin (comme une requête) n'est pas exécutée.
En utilisant ce que nous venons de voir sur SQL et en appelant la méthode .execute() sur notre connexion, nous pouvons lancer une requête SQL brute pour récupérer tous les enregistrements de la table census. L'objet retourné par .execute() est un ResultProxy. Sur ce ResultProxy, on peut ensuite utiliser la méthode .fetchall() pour obtenir nos résultats — c'est‑à‑dire le ResultSet.
Dans cet exercice, vous allez utiliser une requête SQL traditionnelle. Remarquez que lorsque vous exécutez une requête en SQL brut, vous interrogez la table directement dans la base de données. En particulier, aucune étape de réflexion n'est nécessaire.
Dans le prochain exercice, vous passerez à SQLAlchemy et commencerez à en comprendre les avantages. À vous de jouer !
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Utilisez la méthode
.connect()deenginepour créer une connexion. - Rédigez une instruction SQL qui interroge toutes les colonnes de
censuset stockez‑la dansstmt. Notez que votre instruction SQL doit être une chaîne de caractères. - Utilisez les méthodes
.execute()et.fetchall()surconnectionet stockez le résultat dansresults. Rappelez‑vous que.execute()vient avant.fetchall()et questmtdoit être transmis à.execute(). - Affichez
results.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)