Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj select z modułu sqlalchemy.
  • Załaduj tabelę census. Ten kod jest już napisany.
  • Utwórz zapytanie za pomocą funkcji select(), które pobierze wszystkie rekordy z tabeli census. W tym celu przekaż do select() 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 census i zapisz je w zmiennej results. Wykonaj to w następujący sposób:
    • Wywołaj metodę .execute() na obiekcie connection, przekazując stmt jako argument, aby uzyskać ResultProxy.
    • Wywołaj .fetchmany() z odpowiednim argumentem size na connection.execute(stmt), aby pobrać ResultSet.

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)
Edytuj i uruchom kod