Как обеспечить, чтобы изменения базы данных можно было легко перемещать по DVCS с помощью django

StackOverflow https://stackoverflow.com/questions/1646074

Вопрос

Обзор

Я создаю веб-сайт на django.Мне нужно разрешить людям начинать добавлять плоские страницы и установить некоторые настройки в admin.Эти изменения должны быть окончательными, поскольку эта информация поступает от клиента.Тем не менее, я также разрабатываю серверную часть, и поэтому буду создавать и переносить таблицы.Я отправляю эти изменения в центр.

Инструменты

джанго

мерзавец

юг

postgres ( постгрес )

Проблема

Как я могу гарантировать, что изменения базы данных с онлайн-сайта дойдут до меня на моем lappy, а также как я могу перенести изменения базы данных на текущий сайт, чтобы у нас был минимум необходимой координации?Я знаком с крючками git, так что этот вариант в игре.

Добавление:

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

Спасибо.

Это было полезно?

Решение

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

Чтобы вернуть вам их обновленные данные (что не кажется критичным, но может быть неплохо работать с актуальными тестовыми данными по мере разработки), я обычно просто использую Django fixtures и команды dumpdata и loaddata .Достаточно просто сбросить приспособление и зафиксировать его в вашем репозитории, а затем загрузить данные с вашей стороны.

Вы могли бы попробовать использовать git hooks для автоматизации чего-то из этого, но если вы хотите автоматизации, я рекомендую вместо этого попробовать что-то вроде Fabric.Большую часть этого материала не нужно запускать каждый раз, когда вы нажимаете / вытягиваете (в частности, я обычно не хотел бы так часто сбрасывать новое средство фиксации данных).

Другие советы

Вероятно, вам стоит взглянуть на Юг:

http://south.aeracode.org/

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

В противном случае каждый раз, когда вы выполняете push, вам придется вручную выполнять шаги миграции самостоятельно.Не забудьте разместить сообщение "сайт находится на обслуживании".;)

Я рекомендую вам использовать mk-таблица-синхронизация чтобы перенести изменения с живого сервера на ваш ноутбук.mk-table-sync принимает множество параметров, поэтому вы можете автоматизировать этот процесс, используя ткань.По сути, вы бы создали функцию fabric, которая выполняет mk-table-sync на каждом планшете, который вы хотите получить с сервера.

Это означает, что вы не можете внести изменения dabatase самостоятельно, потому что они будут перезаписаны при извлечении.

Единственные изменения, которые вы бы внесли в действующую базу данных, - это использование South.Вы бы отправили код на сервер, а затем запустили мигрировать чтобы обновить схему базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top