Kom igångKom igång gratis

Autoloading av tabeller från en databas

SQLAlchemy kan användas för att automatiskt läsa in tabeller från en databas via en process som kallas reflektion. Reflektion innebär att databasen läses av och att metadata byggs upp utifrån den informationen. Det är motsatsen till att skapa en tabell manuellt och är mycket användbart när du arbetar med befintliga databaser.

För att utföra reflektion behöver du först importera och initiera ett MetaData-objekt. MetaData-objekt innehåller information om tabeller som finns lagrade i en databas. Under reflektionen fylls MetaData-objektet automatiskt med information om den inlästa tabellen, så du behöver bara initiera det innan du kör reflektionen genom att anropa MetaData().

Du behöver också importera Table-objektet från SQLAlchemy-paketet. Sedan använder du det här Table-objektet för att läsa in din tabell från motorn, autoloada kolumnerna och fylla i metadata. Det kan göras med ett enda anrop till Table(): att använda Table-objektet på det här sättet påminner mycket om att skicka argument till en funktion. För att till exempel autoloada kolumnerna med motorn måste du ange nyckelordsargumenten autoload=True och autoload_with=engine till Table().

Slutligen använder du funktionen repr() för att visa information om objektet du just skapade. För alla Python-objekt returnerar repr() en textrepresentation av objektet. För SQLAlchemy Table-objekt returneras den information om tabellen som finns lagrad i metadata.

I den här övningen är din uppgift att reflektera tabellen "census" som finns tillgänglig på din engine och lagra den i en variabel kallad census. Koden för att skapa motorn som du skrev i föregående övning är redan ifylld.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Importera Table och MetaData från sqlalchemy.
  • Skapa ett MetaData-objekt: metadata
  • Reflektera tabellen census med hjälp av Table-objektet och följande argument:
    • Tabellens namn som en sträng ('census').
    • Det metadata-objekt du precis initierade.
    • autoload=True
    • Motorn att autoloada med – i det här fallet engine.
  • Skriv ut detaljerna för census med funktionen repr().

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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(____)
Redigera och kör kod