Sélectionner des données depuis 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 l’engine. En effet, la fonction create_engine() que vous avez utilisée auparavant renvoie une instance d’engine, mais elle n’ouvre pas réellement de connexion tant qu’aucune action nécessitant une connexion n’est exécutée, comme une requête.
En utilisant ce que nous venons d’apprendre sur SQL et en appliquant la méthode .execute() sur notre connexion, nous pouvons exécuter une requête SQL brute pour interroger tous les enregistrements de la table census. L’objet renvoyé par la méthode .execute() est un ResultProxy. Sur ce ResultProxy, nous pouvons ensuite utiliser la méthode .fetchall() pour récupérer nos résultats — c’est-à-dire le ResultSet.
Dans cet exercice, vous allez utiliser une requête SQL traditionnelle. Notez 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 l’exercice suivant, vous passerez à SQLAlchemy et commencerez à en comprendre les avantages. Lancez-vous !
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Utilisez la méthode
.connect()deenginepour créer une connexion. - Écrivez 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()puis.fetchall()surconnectionet stockez le résultat dansresults. Rappelez-vous que.execute()vient avant.fetchall()et questmtdoit être passé à.execute(). - Affichez
results.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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(____)