Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Importuj Table a MetaData z sqlalchemy.
  • Vytvoř objekt MetaData: metadata
  • Reflektuj tabulku census pomocí objektu Table s 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.
  • Vypiš podrobnosti o census pomocí funkce repr().

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(____)
Upravit a spustit kód