IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Importa Table e MetaData da sqlalchemy.
  • Crea un oggetto MetaData: metadata
  • Rifletti la tabella census usando l'oggetto Table con 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.
  • Stampa i dettagli di census usando la funzione repr().

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(____)
Modifica ed esegui il codice