Automatické načítání tabulek z databáze
SQLAlchemy umožňuje automaticky načítat tabulky z databáze pomocí tzv. reflexe. Reflexe je proces, při kterém se databáze přečte a na základě získaných informací se sestaví metadata. Je to pravý opak ručního vytváření tabulky a hodí se zejména při práci s existujícími databázemi.
Pro provedení reflexe budeš nejdřív potřebovat importovat a inicializovat objekt MetaData. Objekty MetaData uchovávají informace o tabulkách uložených v databázi. Při reflexi se objekt MetaData automaticky naplní informacemi o načítané tabulce — stačí ho tedy před samotnou reflexí inicializovat voláním MetaData().
Dále budeš potřebovat importovat objekt Table z balíčku SQLAlchemy. Pomocí tohoto objektu pak přečteš svoji tabulku z enginu, automaticky načteš sloupce a naplníš metadata. To vše zvládneš jediným voláním Table() — práce s objektem Table se podobá předávání argumentů funkci. Například pro automatické načtení sloupců prostřednictvím enginu je třeba předat Table() klíčové argumenty autoload=True a autoload_with=engine.
Nakonec použiješ funkci repr() k zobrazení informací o právě vytvořeném objektu. Pro libovolný pythoní objekt vrátí repr() jeho textovou reprezentaci. Pro objekty Table ze SQLAlchemy vrátí informace o dané tabulce uložené v metadatech.
V tomto cvičení je tvým úkolem reflektovat tabulku "census" dostupnou přes tvůj engine do proměnné nazvané census. Kód pro vytvoření enginu z předchozího cvičení jsme již předvyplnili.
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Importuj
TableaMetaDatazsqlalchemy. - Vytvoř objekt
MetaData:metadata - Reflektuj tabulku
censuspomocí objektuTables těmito argumenty:- Název tabulky jako řetězec (
'census'). - Metadata, která jsi právě inicializoval/a — použij
metadata. autoload=True- Engine pro automatické načtení — v tomto případě
engine.
- Název tabulky jako řetězec (
- Vypiš podrobnosti o
censuspomocí funkcerepr().
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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(____)