Какое ваше любимое решение для управления миграциями баз данных в django?
Мне очень нравится система управления миграцией баз данных Rails. Это не на 100% отлично, но это делает трюк. Django не поставляется с такой системой миграции базы данных (пока?), Но есть ряд проектов с открытым исходным кодом, которые могут сделать именно это, например, джанго-эволюция и юг, например.
Итак, мне интересно, какое решение для управления миграцией баз данных для django вы предпочитаете? (один вариант для каждого ответа)
Ответы
Ответ 2
Migratory выглядит красиво и просто.
Ответ 3
Мы используем Django на работе, и мы использовали dmigrations. Хотя у нее есть свои причуды, это было полезно до сих пор. Некоторые функции:
- Он использует таблицу в базе данных, чтобы отслеживать, какие миграции были применены.
- Поскольку он знает, какие из них были применены, вы можете выполнить миграцию и вернуться.
- Он интегрируется с
manage.py
в качестве команды. - Индивидуальные сценарии миграции - это Python, но если ваша логика миграции является чистым SQL, dmigrations упрощает просто SQL-запрос и выполняет его.
Одна из проблем заключается в том, что она только поддерживает MySQL. Однако один из наших ребят делает локальный взлом для поддержки PostgreSQL, который мы используем. Насколько я помню, взлома не была настолько обширной, поэтому не должно быть ужасно сложно взломать ее для поддержки других РСУБД.
Ответ 4
Мне нравится django-evolution:
плюсы:
- чистый дизайн
- SQL не нужен
- гибкий
- тривиальный для установки
- простой в использовании
минусы:
- миграции не фиксируются в кодовой базе
- существует риск случайного выполнения миграции дважды
Ответ 5
Помимо юга, dmigrations, django-evolution и Migratory, я думал, что добавлю simplemigrations в качестве другого инструмента, который я видел для автоматизация миграции Django.
Я использовал три из них в прошлом, но теперь выполняю миграцию вручную. Я думаю о попытке Юга снова из-за последних добавленных функций.
Ответ 6
Просто отметим, что с 2009 года почти каждый проект, упомянутый здесь, кроме Юга, мертв. South является стандартом де-факто, лучше или хуже.
Ответ 7
Если вы используете SQLAlchemy в качестве своего ORM, то стандартом de facto является Alembic.
Другая альтернатива, которая не упоминалась, yoyo-migrations.
Ответ 8
Я использовал simple-db-migrate
Плюсы:
- он позволяет мне откатывать миграции (IDK, если другие делают это тоже).
- интегрируется с manage.py
- каждый, кто знает SQL, может создать миграцию
- он не выполняет миграцию дважды: приложение записывает информацию о миграции (метку времени, запрос и т.д.) в таблицу
Минусы:
- Если вы добавите миграцию с более низкой меткой времени, чем последняя установленная миграция, эта миграция не запускается
- Поддерживается только MySQL