Caricamento automatico delle tabelle da un database
Con SQLAlchemy puoi caricare automaticamente le tabelle da un database usando la cosiddetta reflection. La reflection è il processo di lettura del database e costruzione dei metadati in base a tali informazioni. È l'opposto della creazione manuale di una Table ed è molto utile quando lavori con database esistenti.
Per eseguire la reflection, devi prima importare e inizializzare un oggetto MetaData. Gli oggetti MetaData contengono informazioni sulle tabelle archiviate in un database. Durante la reflection, l'oggetto MetaData verrà popolato automaticamente con le informazioni sulla tabella riflessa, quindi è sufficiente inizializzarlo prima chiamando MetaData().
Dovrai anche importare l'oggetto Table dal pacchetto SQLAlchemy. Poi userai questo oggetto Table per leggere la tabella dal motore, caricare automaticamente le colonne e popolare i metadati. Questo si può fare con una singola chiamata a Table(): usare l'oggetto Table in questo modo è un po' come passare argomenti a una funzione. Ad esempio, per caricare automaticamente le colonne con il motore, devi specificare gli argomenti con parola chiave autoload=True e autoload_with=engine in Table().
Infine, per visualizzare le informazioni sull'oggetto che hai appena creato, userai la funzione repr(). Per qualsiasi oggetto Python, repr() restituisce una rappresentazione testuale di quell'oggetto. Per gli oggetti Table di SQLAlchemy, restituisce le informazioni su quella tabella contenute nei metadati.
In questo esercizio, il tuo compito è riflettere la tabella "census" disponibile sul tuo engine in una variabile chiamata census. Abbiamo già precompilato il codice per creare l'engine che hai scritto nell'esercizio precedente.
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Importa
TableeMetaDatadasqlalchemy. - Crea un oggetto
MetaData:metadata - Rifletti la tabella
censususando l'oggettoTablecon questi argomenti:- Il nome della tabella come stringa (
'census'). - I metadati che hai appena inizializzato.
autoload=True- Il motore con cui effettuare l'autoload, in questo caso
engine.
- Il nome della tabella come stringa (
- Stampa i dettagli di
censususando la funzionerepr().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____)