CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Importez select depuis le 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 cela, passez une liste à select() contenant un seul élément : census.
  • Affichez stmt pour voir la requête SQL effectivement créé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 récupérer le ResultSet.

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