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

Обзор

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

Инструменты

django

git

юг

postgres

Проблема

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

Приложение:

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

Спасибо.

4 голоса | спросил chiggsy 29 +03002009-10-29T22:40:29+03:00312009bEurope/MoscowThu, 29 Oct 2009 22:40:29 +0300 2009, 22:40:29

3 ответа


0

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

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

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

ответил Carl Meyer 30 +03002009-10-30T05:55:37+03:00312009bEurope/MoscowFri, 30 Oct 2009 05:55:37 +0300 2009, 05:55:37
0

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

http://south.aeracode.org/

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

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

ответил GrumpyCanuck 29 +03002009-10-29T22:43:42+03:00312009bEurope/MoscowThu, 29 Oct 2009 22:43:42 +0300 2009, 22:43:42
0

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

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

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

ответил Taras Mankovski 29 +03002009-10-29T22:53:14+03:00312009bEurope/MoscowThu, 29 Oct 2009 22:53:14 +0300 2009, 22:53:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132