Версия трека, автоматизировать изменения схемы базы данных с помощью django
В настоящее время я смотрю на платформу Python Django для будущих веб-приложений на базе db, а также для порта некоторых приложений, написанных на PHP. Одним из самых неприятных вопросов в последние годы явилось отслеживание изменений схемы базы данных и внедрение этих изменений в производительные системы. Я не осмелился попросить также их отменить, но, конечно, для тестирования и отладки это будет отличная функция. Из других вопросов здесь (например, этот или этот, я вижу, что я не и что это не тривиальная проблема. Кроме того, я нашел много вдохновений в ответах там.
Теперь, поскольку Django кажется очень мощным, есть ли у него какие-либо инструменты, которые помогут вам в этом? Может быть, это даже в их документах, и я пропустил это?
Ответы
Ответ 1
Существует, по крайней мере, две сторонние утилиты для обработки миграций схемы БД, South и Django Evolution. Я не пробовал ни одного, но я слышал кое-что о Юге, хотя Эволюция была вокруг немного дольше.
Кроме того, посмотрите на SchemaEvolution на вики Django. Это просто вики-страница о миграции db.
Ответ 2
В прошлый раз, когда я проверил (версия 0.97), syncdb сможет добавлять таблицы для синхронизации вашей схемы БД с вашим файлом models.py, но не может:
- Переименуйте или добавьте столбец в заполненную БД. Вам нужно сделать это вручную.
- Рефакторизуйте свою модель (например, разделите таблицу на две части) и замените свою БД соответственно.
Возможно, было возможно написать Django script, чтобы выполнить миграцию, играя с двумя разными менеджерами, но это может возраст, если ваш БД большой.
Ответ 3
В недавнем DjangoCon произошел сеанс панели по изменениям схемы БД; есть видео сеанса (спасибо Google), который должен предоставить некоторую полезную информацию о ряде этих утилит.
Ответ 4
И теперь также dmigrations. Из анонс:
django-evolution пытается решить эту проблему умным путем, обнаружив изменения в моделях, которые еще не нашли отражение в схеме базы данных, и выясните, что нужно сделать, чтобы привести их обратно в синхронизацию. В противоположность этому, dmigrations принимает глупый подход: он требует, чтобы вы явно указывали изменения в последовательности миграций, которые будут применяться в свою очередь, чтобы привести базу данных в самое последнее состояние, которое отражает основные модели.
Это означает дополнительную работу для разработчиков, которые создают миграции, но также делает весь процесс полностью прозрачным - для наших проектов мы решили пойти с самой простой системой, которая могла бы работать.
(Мой жирный шрифт)
Ответ 5
Я слышал много хорошего о Django Schema Evolution Branch, и это были предположения реальных пользователей. Он больше всего работает из коробки и делает то, что он должен делать.
Ответ 6
U следует искать Dmigrations, он немного отличается от django-eveoltions.
Он показывает вам все, что он делает, и за усложненные вещи, которые он запрашивает у вас за ваши интервалы. Это должно быть здорово.