Сведения о вопросе

Martincow

21:06, 1st October, 2020

Теги

database   django   svn    

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

Просмотров: 576   Ответов: 6

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

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



  Сведения об ответе

PIRLO

03:22, 10th August, 2020

Существует по крайней мере две сторонние утилиты для обработки DB миграции схемы, Юг и Django эволюция. Я не пробовал ни того, ни другого, но я слышал некоторые хорошие вещи о Юге, хотя эволюция была вокруг немного дольше.

Кроме того, посмотрите на SchemaEvolution на Django wiki. Это всего лишь страница wiki о переносе базы данных.


  Сведения об ответе

SEEYOU

04:14, 21st August, 2020

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

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

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


  Сведения об ответе

DAAA

13:14, 29th August, 2020

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


  Сведения об ответе

pumpa

06:40, 15th August, 2020

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

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

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

(Мой смелый)


  Сведения об ответе

SKY

17:31, 2nd August, 2020

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


  Сведения об ответе

crush

23:44, 17th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться