Подтвердить что ты не робот

Есть ли средство автоматизации SQLAlchemy, например South для Django?

Есть ли средство автоматизации SQLAlchemy, например South для Django?

Я посмотрел на sqlalchemy-migrate, но он, похоже, не создает сценарии обновления sql автоматически или не обновляет DB

Похоже, что с sqlalchemy-migrate вам нужно a) вручную скопируйте свою старую модель в новый файл б) вставить новую модель в приложение и скопировать ее в новый файл c) писать вручную создавать/отбрасывать/изменять таблицы в расширенном диалекте python sqlalchemy d) сгенерировать sql alter script e) выполнить команду для выполнения alter sql script

Что касается меня, это не решает проблему и только добавляет накладные расходы, поскольку я могу просто выполнить d) вручную, и это будет намного быстрее, чем делать a), b), c) вручную только до d), что вы можете сделать за один шаг.

Есть ли какие-либо автоматические библиотеки миграции для SQLAlchemy, например South для Django, или многие инструменты для преобразования в RoR?

Мне нужно изменить модель SQLAlchemy в приложении python, запустить инструмент и сравнить текущую схему БД с новой схемой БД, которую должна использовать новая модель, и создать скрипты Alter, которые я могу настроить вручную и выполнить.

Есть ли такое решение в Python?

4b9b3361

Ответ 1

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

  • Таблица добавления и удаления
  • Добавление и удаление столбцов
  • Изменение обнуляемого статуса на столбцах
  • Основные изменения в индексах, уникальные ограничения с явным именем и внешние ключи

(см. также: https://alembic.sqlalchemy.org/en/latest/autogenerate.html).

Установить алембик

pip install alembic

или (в зависимости от используемой версии Python):

pip3 install alembic

Настроить алембик

Выполните следующую команду в вашем проекте:

alembic init alembic

Это настроит alembic для вашего проекта в папке с именем alembic.

Затем вам нужно будет отредактировать сгенерированный alembic.ini конфигурации alembic.ini.

В файле env.py сообщите Alembic, где найти объект metadata SQLAlchemy в вашем проекте.

(см. также: https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file).

Генерация миграции

Просто выполните следующую командную строку:

alembic revision --autogenerate -m "Message for this migration"

Или даже (не рекомендуется):

alembic revision --autogenerate

Обновите базу данных

После этого я alembic.ini базу данных с помощью этой простой команды из папки, содержащей alembic.ini конфигурации alembic.ini:

alembic upgrade head

(см. также: http://rodic.fr/blog/automatic-migrations-sqlalchemy-alembic/)

Ответ 2

Существует Alembic, который выглядит очень многообещающим, но проблема (на данный момент) заключается в том, что поддержка баз данных SQlite очень ограничена.

Ответ 3

В настоящий момент нет. Alembic требует, чтобы вы написали код о добавлении/удалении/изменении структуры таблицы или создании/удалении таблицы. Поэтому для sqlalchemy ничего подобного django south не существует.