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
Instructions
- Importez
TableetMetaDatadepuissqlalchemy. - Créez un objet
MetaData:metadata - Reflétez la table
censusen utilisant l’objetTableavec 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.
- Le nom de la table sous forme de chaîne (
- Affichez les détails de
censusavec la fonctionrepr().
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(____)