5.5 Миграции в SQLAlchemy, знакомство с Alembic
4 из 4 шагов пройдено
1 из 1 баллa  получен

Создание таблиц

Для создания таблиц, мы можем вызвать метод MetaData.create_all() с объектом Engine.

model_file.Base.metadata.create_all(bind=engine)

Этот метод создает таблицы только в том случае, если они не существуют в базе данных. Это значит, что его можно вызвать безопасно несколько раз добавив например в main.py.

Но делать мы это не будем, так как, вызов этого метода после изменения наших моделей ничего не изменит. Для этого нужно использовать инструмент миграции под названием Alembic. 

 Alembic

Alembic предоставляет нам способ программно создавать и выполнять миграции для обработки изменений в базе данных, которые нам нужно будет вносить по мере развития нашего приложения. Например, мы можем добавить столбцы в наши таблицы или удалить атрибуты из наших моделей. Мы также можем добавить совершенно новые модели или разделить существующую модель на несколько моделей. Alembic предоставляет нам способ обеспечить эти типы изменений, используя возможности SQLAlchemy.

Процесс миграции с помощью Alembic состоит из следующих шагов:

  • Создание миграционных файлов. Alembic автоматически генерирует скрипты миграции, которые содержат изменения в структуре базы данных.
  • Применение миграций. Alembic позволяет применять миграции к базе данных с помощью команды alembic upgrade. Это позволяет обновлять структуру базы данных и применять изменения, описанные в миграционных файлах.
  • Откат миграций. Alembic позволяет откатывать миграции с помощью команды alembic downgrade. Это позволяет отменять изменения и возвращаться к предыдущим версиям базы данных.

Использование Alembic для миграции базы данных позволяет сохранить целостность данных и обеспечить гибкость в разработке приложений. Этот инструмент значительно облегчает процесс изменения структуры базы данных, делая его более простым и предсказуемым.

Чтобы начать, нам нужно установить Alembic, что мы можем сделать со следующим:

pip install alembic

Чтобы создать среду миграции, запустим команду, чтобы создать нашу среду миграции в каталоге app/migrations/.

alembic init app/migrations

Вы можете выбрать любое имя каталога, которое вам нравится, главное его назвать с таким именем, что нигде не будет использоваться в качестве имени модуля в вашем коде. Мы получим следующий ответ:

  Creating directory ' ~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations' ...  done
  Creating directory '~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations/versions' ...  done
  Generating ~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations/script.py.mako ...  done
  Generating ~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations/env.py ...  done
  Generating ~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations/README ...  done
  Generating ~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/alembic.ini ...  done
  Please edit configuration/connection/logging settings in '~/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/alembic.ini' before proceeding.

Этот процесс инициализации создает среду миграции в виде необходимых файлов, а также создает файл alembic.ini с параметрами конфигурации в корне проекта. Если мы посмотрим на нашу структуру сейчас, то увидим следующее:

В нашей папке migrations мы видим файл env.py и файл шаблона script.py.mako вместе с папкой versions.

  • Папка versions будет хранить наши скрипты миграции.
  • Файл env.py используется Alembic для определения и создания экземпляра движка SQLAlchemy, подключения к этому движку и запуска транзакции, а также для правильного вызова движка миграции при запуске команды Alembic.
  • Шаблон script.py.mako используется при создании миграции и определяет базовую структуру миграции.

В следующем шаге мы настроим нашу среду миграций.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.