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

Výběr dat z tabulky pomocí SQLAlchemy

Skvělá práce! Teď přišel čas sestavit svůj první SELECT dotaz pomocí SQLAlchemy. SQLAlchemy nabízí příjemný "Pythonic" způsob práce s databázemi. V předchozím cvičení jsi dotazoval/a databázi přímo pomocí čistého SQL. V SQLAlchemy budeš místo toho pracovat přes objekt Table a SQLAlchemy se postará o přeložení tvého dotazu do odpovídajícího SQL příkazu. Nemusíš tak řešit rozdíly mezi jednotlivými dialekty SQL, jako je MySQL nebo PostgreSQL – stačí využít Pythonic přístup SQLAlchemy, díky kterému budeš pracovat efektivněji a přehledněji. Proto se ho vyplatí naučit, i když už tradiční SQL znáš.

V tomto cvičení opět sestavíš dotaz, který načte všechny záznamy z tabulky census. Tentokrát ale použiješ funkci select() z modulu sqlalchemy. Tato funkce vyžaduje jako jediný povinný argument seznam tabulek nebo sloupců – například select([my_table]).

Z výsledku (ResultProxy) načteš jen několik záznamů pomocí .fetchmany() s argumentem size, který určuje jejich počet.

Table a MetaData jsou již naimportované. Metadata jsou dostupná jako metadata a připojení k databázi jako connection.

Toto cvičení je součástí kurzu

Introduction to Databases in Python

Zobrazit kurz

Pokyny k cvičení

  • Importuj select z modulu sqlalchemy.
  • Reflektuj tabulku census. Tento kód je už napsaný za tebe.
  • Pomocí funkce select() vytvoř dotaz, který načte všechny záznamy z tabulky census. Do select() předej seznam s jediným prvkem: census.
  • Vypiš stmt, abys viděl/a, jaký SQL dotaz se vytváří. Tento kód je již napsaný za tebe.
  • Načti 10 záznamů z tabulky census a ulož je do results. Postupuj takto:
    • Na connection zavolej metodu .execute() s argumentem stmt, čímž získáš ResultProxy.
    • Na connection.execute(stmt) zavolej .fetchmany() s odpovídajícím argumentem size, abys získal/a ResultSet.

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 select
from ____ import ____

# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)

# Build select statement for census table: stmt
stmt = ____

# Print the emitted statement to see the SQL string
print(stmt)

# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)

# Execute the statement and print the results
print(results)
Upravit a spustit kód