Отслеживание версий, автоматизация изменений схемы БД с помощью django

StackOverflow https://stackoverflow.com/questions/20021

  •  09-06-2019
  •  | 
  •  

Вопрос

В настоящее время я рассматриваю фреймворк Python Django для будущих веб-приложений на основе баз данных, а также для порта некоторых приложений, написанных в настоящее время на PHP.Одной из самых неприятных проблем в последние годы моей работы было отслеживание изменений схемы базы данных и развертывание этих изменений в продуктивных системах.Я не осмелился попросить иметь возможность их отменить, но, конечно, для тестирования и отладки это была бы отличная функция.Из других вопросов здесь (например, Вот этот или Вот этот), я вижу, что я не одинок и что это не тривиальная проблема.Кроме того, я нашел много вдохновения в ответах.

Теперь, поскольку Django кажется очень мощным, есть ли у него какие-либо инструменты, которые помогут справиться с вышеперечисленным?Может быть, это даже есть в их документах, и я это пропустил?

Это было полезно?

Решение

Существует как минимум две сторонние утилиты для управления миграцией схемы БД. Юг и Джанго Эволюция.Я не пробовал ни один из них, но слышал кое-что хорошее о South, хотя Evolution существует немного дольше.

Также посмотрите СхемаЭволюция в вики Джанго.Это просто вики-страница о переносе базы данных.

Другие советы

Когда я проверял последний раз (версия 0.97), syncdb сможет добавлять таблицы для синхронизации схемы вашей БД с файлом models.py, но не может:

  • Переименуйте или добавьте столбец в заполненную базу данных.Вам нужно сделать это вручную.
  • Рефакторизуйте свою модель (например, разделите таблицу на две части) и соответствующим образом заполните свою БД.

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

На недавнем DjangoCon прошла панельная сессия по изменениям схемы БД;Eсть видео сеанса (спасибо Google), который должен предоставить некоторую полезную информацию о ряде этих утилит.

И теперь есть еще миграция.От объявление:

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

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

(Мой смелый)

Я слышал много хорошего о Ветка эволюции схемы Django и это были мнения реальных пользователей.В основном он работает «из коробки» и делает то, что должен.

Тебе следует поискать миграция, он работает немного иначе, чем django-eveoltions.Он показывает вам все, что делает, а в сложных случаях просит вашего вмешательства.Это должно быть здорово.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top