База данных и система контроля версий - PullRequest
3 голосов
/ 11 октября 2008

Я работаю над проектом с фреймворком django и использую систему контроля версий для синхронизации моего кода с другими людьми. Но я не знаю, как организовать работу с базой данных. В django любой человек, работавший над проектом, может изменить модели django и сказать syncdb синхронизировать объекты модели с db. Но другие люди не знают об этих изменениях, и пересмотр кода может не сработать. Пожалуйста, расскажите мне несколько способов решения этой проблемы (может быть, другой БД или что-то другое).

Спасибо, и извините за мой английский:)

Ответы [ 7 ]

4 голосов
/ 11 октября 2008

Вы должны на самом деле поговорить с людьми в вашем проекте.

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

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

Определение модели особенное, и тот, кто может это изменить, должен сообщить об этом всем остальным.

3 голосов
/ 11 октября 2008

У вас должна быть начальная резервная копия БД под контролем версий. И после этого вы должны поместить все сценарии модификации в один и тот же контроль версий. Примерно так:

/ База данных (в хранилище)

  • Начальное резервное копирование
  • Script1_date.sql
  • Script2_date.sql

...

1 голос
/ 29 января 2009

взгляните также на deltasql. Вы можете проверить это на http://www.gpu -grid.net / deltasql (имя пользователя: пароль администратора: testdbsync) и скачать с http://sourceforge.net/projects/deltasql чао: -)

1 голос
/ 12 января 2009

На самом деле, глядя на альтернативы, я часто удивляюсь, что никто не упоминает о юге

http://south.aeracode.org/

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

1 голос
/ 16 октября 2008

Мне любопытно ... что произойдет, если вы поместите файлы MDF и LDF под контроль исходного кода? Конечно, если ваши таблицы пусты и у вас просто есть структура базы данных ...

1 голос
/ 11 октября 2008

Я не уверен, что понимаю вашу проблему; но помните, что в Django syncdb создает только новые таблицы. Он не изменяет существующую таблицу.

Если, например, вы просто добавите новое поле, syncdb ничего не сделает.

0 голосов
/ 11 октября 2008

Звучит так, как будто вы хотите миграцию.

В качестве примера: http://www.aswmc.com/dbmigration/

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

...