Какое ваше любимое решение для управления миграцией базы данных в 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