ПочатиПочніть безкоштовно

Автозавантаження таблиць з бази даних

SQLAlchemy можна використати, щоб автоматично завантажувати таблиці з бази даних за допомогою механізму, який називається рефлексією. Рефлексія — це процес читання бази даних і побудови метаданих на основі цієї інформації. Це протилежність ручного створення Table і дуже корисна річ для роботи з наявними базами даних.

Щоб виконати рефлексію, спершу потрібно імпортувати й ініціалізувати об'єкт MetaData. Об'єкти MetaData містять інформацію про таблиці, збережені в базі даних. Під час рефлексії об'єкт MetaData буде автоматично заповнений відомостями про відображену таблицю, тож перед відображенням достатньо просто ініціалізувати його, викликавши MetaData().

Вам також потрібно імпортувати об'єкт Table із пакета SQLAlchemy. Потім ви використовуєте цей об'єкт Table, щоб прочитати вашу таблицю з двигуна (engine), автозавантажити стовпці та заповнити метадані. Це можна зробити одним викликом Table(): таке використання Table схоже на передавання аргументів до функції. Наприклад, щоб автозавантажити стовпці разом із engine, потрібно вказати іменовані аргументи autoload=True і autoload_with=engine для Table().

Насамкінець, щоб переглянути інформацію про щойно створений об'єкт, використайте функцію repr(). Для будь‑якого об'єкта Python repr() повертає текстове подання цього об'єкта. Для об'єктів Table у SQLAlchemy вона повертає інформацію про таблицю, що міститься в метаданих.

У цій вправі вам потрібно відобразити таблицю "census", доступну у вашому engine, у змінну з назвою census. Ми вже заповнили код для створення engine, який ви писали в попередній вправі.

Ця вправа є частиною курсу

Вступ до баз даних у 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(____)
Редагувати та запускати код