Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj metody .connect() na obiekcie engine, aby utworzyć połączenie.
  • Zbuduj instrukcję SQL, która pobierze wszystkie kolumny z tabeli census, i zapisz ją w zmiennej stmt. Pamiętaj, że instrukcja SQL musi być ciągiem znaków.
  • Wywołaj kolejno metody .execute() i .fetchall() na obiekcie connection i zapisz wynik w zmiennej results. 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(____)
Edytuj i uruchom kod