Automatyczne wczytywanie tabel z bazy danych
SQLAlchemy umożliwia automatyczne wczytywanie tabel z bazy danych za pomocą mechanizmu zwanego refleksją. Refleksja polega na odczycie bazy danych i zbudowaniu metadanych na podstawie zawartych w niej informacji. To podejście jest odwrotnością ręcznego tworzenia tabeli i świetnie sprawdza się przy pracy z istniejącymi bazami danych.
Aby przeprowadzić refleksję, najpierw musisz zaimportować i zainicjalizować obiekt MetaData. Obiekty MetaData przechowują informacje o tabelach w bazie danych. Podczas refleksji obiekt MetaData zostaje automatycznie wypełniony informacjami o odzwierciedlonej tabeli – wystarczy go zainicjalizować przed refleksją, wywołując MetaData().
Będziesz też potrzebować obiektu Table z pakietu SQLAlchemy. Pozwala on odczytać tabelę z silnika bazy danych, automatycznie wczytać kolumny i wypełnić metadane. Wystarczy jedno wywołanie Table() – używanie tego obiektu przypomina przekazywanie argumentów do funkcji. Aby automatycznie wczytać kolumny przy użyciu silnika, musisz podać argumenty słów kluczowych autoload=True i autoload_with=engine.
Na koniec, aby wyświetlić informacje o utworzonym obiekcie, skorzystaj z funkcji repr(). Dla dowolnego obiektu w Pythonie repr() zwraca jego tekstową reprezentację. W przypadku obiektów Table z SQLAlchemy zwróci informacje o tabeli przechowywane w metadanych.
W tym ćwiczeniu twoim zadaniem jest przeprowadzenie refleksji tabeli "census" dostępnej na silniku engine i zapisanie jej w zmiennej census. Kod tworzący silnik z poprzedniego ćwiczenia został już wstępnie uzupełniony.
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
TableiMetaDatazsqlalchemy. - Utwórz obiekt
MetaData:metadata. - Przeprowadź refleksję tabeli
census, używając obiektuTablez następującymi argumentami:- Nazwa tabeli jako ciąg znaków (
'census'). - Zainicjalizowane właśnie metadane.
autoload=True- Silnik, z którym ma nastąpić automatyczne wczytanie – w tym przypadku
engine.
- Nazwa tabeli jako ciąg znaków (
- Wyświetl szczegóły tabeli
censusza pomocą funkcjirepr().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____
# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')
# Create a metadata object: metadata
metadata = ___
# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)
# Print census table metadata
print(____)