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

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

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

21.08.2008 14:10:25
6 ОТВЕТОВ
РЕШЕНИЕ

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

Также посмотрите на SchemaEvolution в вики Django. Это просто вики-страница о переносе БД.

12
21.08.2008 15:20:00
Юг, кажется, является лучшим свиданием, после игры с Django Evolution, я думаю, что миграция данных с Юга - убийственная особенность. Я не думаю, что в Django Evolution еще есть Data Migration. только схема Evelution
Rasiel 18.06.2009 02:59:31

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

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

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

2
23.07.2013 15:19:07

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

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

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

(Мой жирный)

0
4.09.2008 08:29:34

Я слышал много хорошего о Django Schema Evolution Branch, и это были мнения реальных пользователей. Он работает из коробки и делает то, что должен.

0
7.09.2008 09:41:21

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

0
18.09.2008 16:44:03

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

1
25.09.2008 06:06:20
Хорошая сессия. Думаю, я решил придерживаться эволюции Джанго.
Farinha 3.10.2008 17:15:23