Sélectionner des données depuis une table avec SQLAlchemy
Excellent travail jusqu’ici ! Il est temps de construire votre première instruction de sélection avec SQLAlchemy. SQLAlchemy offre une façon « pythonique » d’interagir avec les bases de données. Dans l’exercice précédent, avec du SQL brut, vous interrogiez directement la base. Avec SQLAlchemy, vous passez plutôt par un objet Table, et SQLAlchemy se charge de traduire votre requête en une instruction SQL appropriée. Ainsi, au lieu de gérer les différences entre les dialectes de SQL traditionnels comme MySQL ou PostgreSQL, vous pouvez vous appuyer sur le cadre pythonique de SQLAlchemy pour simplifier votre flux de travail et interroger vos données plus efficacement. Pour cette raison, cela vaut la peine d’être appris même si vous maîtrisez déjà le SQL traditionnel.
Dans cet exercice, vous allez à nouveau construire une instruction pour interroger tous les enregistrements de la table census. Cette fois, toutefois, vous utiliserez la fonction select() du module sqlalchemy. Cette fonction requiert une liste de tables ou de colonnes comme seul argument obligatoire : par exemple, select([my_table]).
Vous ne récupérerez aussi qu’un petit nombre d’enregistrements du ResultProxy en utilisant .fetchmany() avec un argument size indiquant le nombre d’enregistrements à récupérer.
Table et MetaData ont déjà été importés. Les métadonnées sont disponibles sous metadata et la connexion à la base de données sous connection.
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Importez
selectdepuis le modulesqlalchemy. - Reflétez la table
census. Ce code est déjà écrit pour vous. - Créez une requête avec la fonction
select()pour récupérer tous les enregistrements de la tablecensus. Pour cela, passez une liste àselect()contenant un seul élément :census. - Affichez
stmtpour voir la requête SQL effectivement créée. Ce code a été écrit pour vous. - Récupérez 10 enregistrements de la table
censuset stockez-les dansresults. Pour ce faire :- Utilisez la méthode
.execute()surconnectionavecstmtcomme argument pour obtenir le ResultProxy. - Utilisez
.fetchmany()avec l’argumentsizeapproprié surconnection.execute(stmt)pour récupérer le ResultSet.
- Utilisez la méthode
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)