CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Importez select du module sqlalchemy.
  • 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 table census. Pour ce faire, transmettez une liste à select() contenant un seul élément : census.
  • Affichez stmt pour voir la requête SQL générée. Ce code a été écrit pour vous.
  • Récupérez 10 enregistrements de la table census et stockez-les dans results. Pour ce faire :
    • Utilisez la méthode .execute() sur connection avec stmt comme argument pour obtenir le ResultProxy.
    • Utilisez .fetchmany() avec l'argument size approprié sur connection.execute(stmt) pour obtenir le ResultSet.

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)
Modifier et exécuter le code