Pobieranie danych z tabeli: surowy SQL
Jak widziałeś w filmie, aby uzyskać dostęp do danych w bazie i nimi operować, najpierw trzeba nawiązać połączenie za pomocą metody .connect() wywołanej na silniku. Dzieje się tak dlatego, że funkcja create_engine(), której używałeś wcześniej, zwraca instancję silnika, ale nie otwiera połączenia, dopóki nie zostanie wykonana akcja tego wymagająca – na przykład zapytanie.
Wykorzystując to, czego właśnie się nauczyłeś o SQL, i wywołując metodę .execute() na połączeniu, możesz użyć surowego zapytania SQL, aby pobrać wszystkie rekordy z tabeli census. Obiekt zwracany przez metodę .execute() to ResultProxy. Na tym obiekcie możesz następnie wywołać metodę .fetchall(), aby uzyskać wyniki – czyli ResultSet.
W tym ćwiczeniu skorzystasz z tradycyjnego zapytania SQL. Pamiętaj, że wykonując zapytanie za pomocą surowego SQL, odpytujesz tabelę bezpośrednio w bazie danych – nie jest potrzebny żaden krok refleksji.
W kolejnym ćwiczeniu przejdziesz do SQLAlchemy i zaczniesz odkrywać jego zalety. Do dzieła!
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Użyj metody
.connect()na obiekcieengine, aby utworzyć połączenie. - Zbuduj instrukcję SQL, która pobierze wszystkie kolumny z tabeli
census, i zapisz ją w zmiennejstmt. Pamiętaj, że instrukcja SQL musi być ciągiem znaków. - Wywołaj kolejno metody
.execute()i.fetchall()na obiekcieconnectioni zapisz wynik w zmiennejresults. Pamiętaj, że.execute()należy wywołać przed.fetchall()i że do.execute()trzeba przekazać zmiennąstmt. - Wyświetl
results.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)