НачатьНачать бесплатно

Автозагрузка таблиц из базы данных

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(____)
Редактировать и запускать код