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
Pokyny k cvičení
- Importuj
selectz modulusqlalchemy. - Reflektuj tabulku
census. Tento kód je už napsaný za tebe. - Pomocí funkce
select()vytvoř dotaz, který načte všechny záznamy z tabulkycensus. Doselect()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
censusa ulož je doresults. Postupuj takto:- Na
connectionzavolej metodu.execute()s argumentemstmt, čímž získáš ResultProxy. - Na
connection.execute(stmt)zavolej.fetchmany()s odpovídajícím argumentemsize, abys získal/a ResultSet.
- Na
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)