Автозагрузка таблиц из базы данных
SQLAlchemy позволяет автоматически загружать таблицы из базы данных с помощью механизма, который называется рефлексией. Рефлексия — это процесс считывания базы данных и построения метаданных на основе полученной информации. По сути, это противоположность ручного создания таблицы, и она особенно удобна при работе с уже существующими базами данных.
Для выполнения рефлексии сначала нужно импортировать и инициализировать объект MetaData. Объекты MetaData хранят информацию о таблицах в базе данных. В процессе рефлексии объект MetaData автоматически заполняется сведениями об отражаемой таблице, поэтому достаточно инициализировать его перед рефлексией, вызвав MetaData().
Также потребуется импортировать объект Table из пакета SQLAlchemy. С его помощью вы считаете таблицу из движка, автоматически загрузите столбцы и заполните метаданные. Всё это выполняется одним вызовом Table(): использование объекта Table таким образом напоминает передачу аргументов в функцию. Например, чтобы автоматически загрузить столбцы с помощью движка, нужно передать в Table() именованные аргументы autoload=True и autoload_with=engine.
Наконец, чтобы просмотреть информацию о созданном объекте, воспользуйтесь функцией repr(). Для любого объекта Python функция repr() возвращает его текстовое представление. Для объектов Table в SQLAlchemy она вернёт информацию о таблице, содержащуюся в метаданных.
В этом упражнении ваша задача — отразить таблицу "census", доступную через engine, в переменную с именем census. Код для создания движка из предыдущего упражнения уже вставлен заранее.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
TableиMetaDataизsqlalchemy. - Создайте объект
MetaData:metadata. - Отразите таблицу
censusс помощью объектаTable, передав следующие аргументы:- Имя таблицы в виде строки (
'census'). - Только что инициализированные метаданные.
autoload=True- Движок для автозагрузки — в данном случае
engine.
- Имя таблицы в виде строки (
- Выведите сведения о
censusс помощью функцииrepr().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____)