Отслеживание версий, автоматизация изменений схемы БД с помощью django - PullRequest
10 голосов
/ 21 августа 2008

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

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

Ответы [ 6 ]

12 голосов
/ 21 августа 2008

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

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

2 голосов
/ 21 августа 2008

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

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

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

1 голос
/ 25 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

0 голосов
/ 07 сентября 2008

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

0 голосов
/ 04 сентября 2008

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

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

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

(Мой жирный)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...