![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bilbobagginz |
|
||||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
Привет!
Django==1.2.3+south question. Ситуация такая: код эволюционирует, а с ним и схема БД (новые столбы, таблички, изменения, в общем ALTERы) Вручную базу обновлять, синхронизировать модели - в лом => Enter migrations. Играюсь с Югом (python2.5), в смысле south. На своем компе A инициализирую миграции приложения:
добавляю миграционные данные в p4 (i.e. version control) обновляю код на тестовом боксе, комп B с немигрированной базой (более старой), обновляю код, запускаю:
Кричит на меня: мол не могу считать миграции нужного человечеству модуля 'django.contrib.auth'. Круто! (оказывается на боксе A действительно в django/contrib/auth появился каталог "migrations") Залезаю (на боксе А) в app2/migrations/__0001_initial.py оригинального (не auth) приложения, от которого зависит мое начальное app1, внутри проекта к которому принадлежат оба приложения. Там добавляю 'django.contrib.auth' перед другой зависимостью. Запускаю заново
И работает. Но: мне пришлось вмешиваться в работу этого south. это неудобно, не масштабируемо. Вижу так: существует граф зависимостей моделей, всяких внешних ключей. Если следовать вышеизложенному методу, значит с каждым core модулем мне надо будет корячиться и добавлять их в ручную. Не хорошо.
Это сообщение отредактировал(а) bilbobagginz - 23.12.2010, 09:39 -------------------- Я ещё не демон. Я только учусь. |
||||||
|
|||||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
добавил уведомления...себе на мыло.
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 3 Всего: 70 |
Ничего не понял. Что вы хотите сделать? Опишите пожалуйста по человечески и с кодом.
Editorial: зачем постить dummy пост чтобы подписаться на уведомления? |
|||
|
||||
| bilbobagginz |
|
||||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
Daevaorn, извиняюсь за неясность.
по пунктам: этот параграф описывает ситуацию и проблему: когда
эта нужда обостряется когда и код и бд - боевые, и бегут несколько версий кода. т.е. нужно удобный инструмент держать код и базу данных в синхронизации, с возможностью добавок в схему, без потери данных. с возможным рефакторингом таблиц/колонок (говоря таблицами и колонками) этот процесс синхронизации эволюции кода с базой данных называют "миграцией" (или "мутацией", или "эволюцией схемы БД", терминология переводится с англ., может в русской терминологии это как-то иначе именуют) Есть несколько инструментов реализации этих "миграций". сейчас тестирую south и о нем идет речь. ХОЧУ: иметь удобные миграции БД с версии на версию. кода тут практически нет. 1. установка south:
2. добавка модуля последним в settings.py переменной INSTALLEDֹ_APPS:
3. работа через manage.py:
это ессно делается на разных машинах, чтобы изменения версии но.N на бд но.1 "мигрировали" на бд но. 2., чтобы можно было обновить код до версии но.N до запуска версии N с базой но. 2 ситуация проясняется ? Это сообщение отредактировал(а) bilbobagginz - 23.12.2010, 12:03 -------------------- Я ещё не демон. Я только учусь. |
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 3 Всего: 70 |
bilbobagginz, Вы опять написали много букв ни о чем и опять без толку
Проблема у вас в чем? South хороший и проверенный инстремент. Если у вас именно с ним проблема, то с большой долей вероятности вы им просто не правильно пользуетесь. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
это не вопрос из серии "помогите понять почему не компиляется код!"
я приглашаю на дискуссию
чтобы понять лучше - что я не так делаю. а может быть и не "не так". -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
Daevaorn,
Раскопки дошли до корня проблем: стало понятно что south не очень хорошо протестирован с ораклом (не спрашивайте почему оракл работает у нас с джангой), результирующий SQL вылетал с ошибками :( Чтобы починитъ генерируемый SQL извратнулись monkey-patch-ем и перегрузили метод south south.db.generic.column_sql() который создавал при опр. условиях неперевариваемый для оракла SQL. Кроме этого было бы удобно, если бы south мог выплевывать SQL при флажке --db-dry-run. проблема: этот обезьян работает только из инстанциированного сервера, а хотелось бы без запуска, всухую (т.е. сейчас патч работает из нашего кода, а хотелось бы, чтобы он работал из кода south. В общем еще немного поиграемся, и начнем подкидывать патчи в south. всем мир. Добавлено через 3 минуты и 54 секунды кстати, по ходу в коде south нашего патча пока нет, а вышел уже джанго 1.2.4 И обещают скоро south внедрить в django.core.* Это сообщение отредактировал(а) bilbobagginz - 28.12.2010, 00:27 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |