Какое ваше любимое решение для управления миграцией базы данных в django?

Мне очень нравится система управления миграцией баз данных Rails. Это не на 100% идеально, но это делает свое дело. Django не поставляется с такой системой миграции баз данных (пока?), Но для этого есть ряд проектов с открытым исходным кодом, например, django-evolution и south.

Поэтому мне интересно, какое решение для управления миграцией баз данных для django вы предпочитаете? (один вариант за ответ, пожалуйста)

8 ответов

Решение

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

Миграционный выглядит красиво и просто.

Если вы используете SQLAlchemy в качестве ORM, то стандартом де-факто является Alembic.

Другая альтернатива, которая не была упомянута, это йо-миграция.

Мы используем Django на работе, и мы использовали миграцию. Хотя у этого есть свои причуды, это было полезно до сих пор. Некоторые особенности:

  • Он использует таблицу в базе данных, чтобы отслеживать, какие миграции были применены.
  • Поскольку он знает, какие из них были применены, вы можете мигрировать вверх и вниз.
  • Он интегрируется с manage.py как команда.
  • Отдельные сценарии миграции - это Python, но если ваша логика миграции - чистый SQL, dmigrations позволяет просто включить SQL и запустить его.

Одна проблема заключается в том, что он в настоящее время поддерживает только MySQL Тем не менее, один из наших парней делает локальный хак для поддержки PostgreSQL, который мы используем. Насколько я помню, взлом не был таким уж обширным, поэтому не должно быть очень сложно взломать его для поддержки других RDBMS.

Мне нравится django-evolution:

плюсы:

  • чистый дизайн
  • SQL не требуется
  • гибкий
  • тривиально установить
  • легко использовать

минусы:

  • миграции не зафиксированы в кодовой базе
  • существует риск случайного запуска миграции дважды

Помимо Юга, dmigrations, django-evolution и Migratory, я подумал, что добавлю простые миграции в качестве еще одного инструмента, который я видел для автоматизации миграции Django.

Я использовал три из них в прошлом, но сейчас выполняю миграции вручную. Я думаю о том, чтобы попробовать Юг снова из-за последних добавленных функций.

Просто отметим, что с 2009 года практически все проекты, упомянутые здесь, кроме Юга, мертвы. Юг является стандартом де-факто, к лучшему или к худшему.

Я использую simple-db-migrate

Плюсы:

  • это позволяет мне откатить миграцию (IDK, если другие делают это тоже).
  • интегрируется с manage.py
  • каждый, кто знает SQL, может создать миграцию
  • он не запускает миграцию дважды: приложение записывает информацию о миграции (метка времени, запрос и т. д.) в таблицу

Минусы:

  • если вы добавляете миграцию с более низкой отметкой времени, чем последняя установленная миграция, эта миграция не выполняется
  • Поддерживается только MySQL
Другие вопросы по тегам