Sélectionner des données d'une table avec SQLAlchemy
Excellente progression jusqu'ici! Il est maintenant temps de créer votre première instruction select avec SQLAlchemy. SQLAlchemy offre une approche « Pythonique » pour interagir avec les bases de données. Dans le dernier exercice, vous avez utilisé du SQL brut et interrogé la base directement. 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 pour vous. Ainsi, au lieu de gérer les différences entre des dialectes précis du SQL traditionnel comme MySQL ou PostgreSQL, vous pouvez tirer parti du cadre Pythonique de SQLAlchemy pour simplifier votre flux de travail et interroger vos données plus efficacement. Pour cette raison, cela vaut la peine de l'apprendre même si vous maîtrisez déjà le SQL traditionnel.
Dans cet exercice, vous allez de 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 exige comme seul argument requis une liste de tables ou de colonnes : 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 qui précise combien d'enregistrements récupérer.
Table et MetaData ont déjà été importés. Les métadonnées sont accessibles via metadata et la connexion à la base de données via connection.
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Importez
selectdu 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 ce faire, transmettez une liste àselect()contenant un seul élément :census. - Affichez
stmtpour voir la requête SQL généré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 obtenir le ResultSet.
- Utilisez la méthode
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)