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
Övningsinstruktioner
- Importera
TableochMetaDatafrånsqlalchemy. - Skapa ett
MetaData-objekt:metadata - Reflektera tabellen
censusmed hjälp avTable-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.
- Tabellens namn som en sträng (
- Skriv ut detaljerna för
censusmed funktionenrepr().
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(____)