CommencerCommencer gratuitement

Chargement automatique des tables depuis une base de données

SQLAlchemy peut charger automatiquement des tables depuis 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 la création manuelle d’une Table et cela est très utile pour travailler avec des bases de données existantes.

Pour effectuer une réflexion, vous devez d’abord importer et initialiser un objet MetaData. Les objets MetaData contiennent des informations sur les tables stockées dans une base de données. Pendant la réflexion, l’objet MetaData est automatiquement renseigné avec les informations sur la table reflétée ; il suffit donc de l’initialiser au préalable en appelant MetaData().

Vous devrez également importer l’objet Table depuis le paquet SQLAlchemy. Ensuite, vous utiliserez cet objet Table pour lire votre table à partir de l’engine, charger automatiquement les colonnes et remplir les métadonnées. Cela peut se faire avec un simple appel à Table() : utiliser l’objet Table de cette manière revient à passer des arguments à une fonction. Par exemple, pour charger automatiquement les colonnes avec l’engine, vous devez spécifier les arguments nommés autoload=True et autoload_with=engine à Table().

Enfin, pour afficher des informations 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 renverra les informations sur cette table contenues 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 de création de l’engine que vous avez écrit dans l’exercice précédent.

Cet exercice fait partie du cours

Introduction aux bases de données en Python

Afficher le cours

Instructions

  • 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 :
    • Le nom de la table sous forme de chaîne ('census').
    • Les métadonnées que vous venez d’initialiser.
    • autoload=True
    • L’engine pour l’autoload — dans ce cas, engine.
  • Affichez les détails de census avec la fonction repr().

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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