Версия track, автоматизировать изменения схемы DB с помощью django


10

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

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

12

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

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

  0

Юг, кажется, лучшая дата, после игры с Django Evolution, я думаю, что миграция данных Юга - это функция убийцы. Я не думаю, что у Django Evolution есть миграция данных. только Schema Evelution 18 июн. 092009-06-18 02:59:31


2

Последний раз я проверил (версия 0,97), SyncDB будет иметь возможность добавлять таблицы для синхронизации БД схемы с файлом models.py, но он не может:

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

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


0

И теперь есть также dmigrations. От announcement:

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

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

(Мой полужирный)


0

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


0

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


1

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

  0

Хорошая сессия. Наверное, я решил, что я буду придерживаться эволюции джанго. 03 окт. 082008-10-03 17:15:23