CommencezCommencez gratuitement

Chargement automatique de tables à partir d'une base de données

On peut utiliser SQLAlchemy pour charger automatiquement des tables d'une base de données grâce à un mécanisme appelé réflexion. La réflexion consiste à lire la base de données et à construire les métadonnées à partir de ces informations. C'est l'inverse de créer une Table manuellement et c'est très utile pour travailler avec des bases existantes.

Pour effectuer la réflexion, vous devez d'abord importer et initialiser un objet MetaData. Les objets MetaData contiennent des renseignements sur les tables stockées dans une base de données. Pendant la réflexion, l'objet MetaData sera rempli automatiquement avec l'information sur la table reflétée; il suffit donc de l'initialiser en appelant MetaData() avant de lancer la réflexion.

Vous devrez aussi importer l'objet Table du progiciel SQLAlchemy. Ensuite, vous utiliserez cet objet Table pour lire votre table depuis le moteur, charger automatiquement les colonnes et renseigner les métadonnées. Tout cela peut se faire avec un seul appel à Table() : utiliser l'objet Table de cette façon revient à passer des arguments à une fonction. Par exemple, pour charger automatiquement les colonnes avec le moteur, vous devez préciser les arguments nommés autoload=True et autoload_with=engine à Table().

Enfin, pour voir l'information sur l'objet que vous venez de créer, vous utiliserez la fonction repr(). Pour tout objet Python, repr() renvoie une représentation textuelle de cet objet. Pour les objets Table de SQLAlchemy, elle retourne l'information sur cette table contenue dans les métadonnées.

Dans cet exercice, votre tâche est de refléter la table "census" disponible sur votre engine dans une variable appelée census. Nous avons déjà prérempli le code pour créer le moteur que vous avez écrit à l'exercice précédent.

Cette activité fait partie du cours

Introduction aux bases de données en Python

Voir le cours

Instructions de l’exercice

  • Importez Table et MetaData depuis sqlalchemy.
  • Créez un objet MetaData : metadata.
  • Reflétez la table census en utilisant l'objet Table avec les arguments suivants :
    • Le nom de la table sous forme de chaîne ('census').
    • Les métadonnées que vous venez d'initialiser.
    • autoload=True
    • Le moteur à utiliser pour le chargement automatique — dans ce cas, engine.
  • Affichez les détails de census avec la fonction repr().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
Modifier et exécuter le code