Wybieranie danych z tabeli za pomocą SQLAlchemy
Świetna robota! Czas na zbudowanie pierwszego zapytania SELECT przy użyciu SQLAlchemy. SQLAlchemy oferuje wygodny, "pythoniczny" sposób pracy z bazami danych. W poprzednim ćwiczeniu korzystałeś z czystego SQL i wysyłałeś zapytania bezpośrednio do bazy. W SQLAlchemy pracujesz natomiast za pośrednictwem obiektu Table – biblioteka sama zajmuje się tłumaczeniem zapytania na odpowiedni dialekt SQL. Dzięki temu nie musisz przejmować się różnicami między MySQL a PostgreSQL czy innymi wariantami SQL – SQLAlchemy ujednolica ten proces i pozwala pracować sprawniej. Warto się z nim zapoznać, nawet jeśli znasz już tradycyjny SQL.
W tym ćwiczeniu ponownie zbudujesz zapytanie pobierające wszystkie rekordy z tabeli census. Tym razem użyjesz jednak funkcji select() z modułu sqlalchemy. Jedynym wymaganym argumentem tej funkcji jest lista tabel lub kolumn – na przykład select([my_table]).
Pobrasz też tylko kilka rekordów z ResultProxy, używając metody .fetchmany() z argumentem size określającym liczbę rekordów do pobrania.
Table i MetaData zostały już zaimportowane. Metadane są dostępne jako metadata, a połączenie z bazą danych jako connection.
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
selectz modułusqlalchemy. - Załaduj tabelę
census. Ten kod jest już napisany. - Utwórz zapytanie za pomocą funkcji
select(), które pobierze wszystkie rekordy z tabelicensus. W tym celu przekaż doselect()listę zawierającą jeden element:census. - Wyświetl
stmt, aby zobaczyć, jakie zapytanie SQL zostało wygenerowane. Ten kod jest już napisany. - Pobierz 10 rekordów z tabeli
censusi zapisz je w zmiennejresults. Wykonaj to w następujący sposób:- Wywołaj metodę
.execute()na obiekcieconnection, przekazującstmtjako argument, aby uzyskać ResultProxy. - Wywołaj
.fetchmany()z odpowiednim argumentemsizenaconnection.execute(stmt), aby pobrać ResultSet.
- Wywołaj metodę
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)