Форум сайта python.su
Здравствуйте, вот начал работать на джанге, и столкнулся с любопытным неудобством:
Когда есть модель и требуется в нее внести в нее изменение (рассмотрим пример добавления столбца в таблицу), то необходимо в шеле бд руцями это все дело прописать. Вот во мне проснулась ленивость (хочу это дело обойти) и несколько вопросов :
1. Всех ли это устраивает (если да, то этот вопрос последний, если нет, то как кто решал эту задачку) ?
2. Вот подумал может добавить при старте сервера затычку типа ModelChecker (будет проверять соответствие модели и структуры таблиц в БД и делать соответствующий ALTER TABLE) ?
3. Или может чуть расширить сам models.Model чтобы класс при инициализации делал проверку и соответствующие изменения (не очень мне такой подход нравится но все же.)
P.S. С Джангой работаю второй день (после 2-х годового опыта работы на Zope3 немного непривычно, вижу кучу минусов, и совсем немного плюсов) так что сильно не пинайте, и если что-то в вопросах глупое - сразу поправьте. Спасибо.
Офлайн
Офлайн
Daevaorn, спасибо за подсказку, почитал, как я и ожидал, однозначного решения нет, и даже тот мощный South не предоставляет средств для решений 100% случаев миграций… Буду развиваться в этом направлении дальше, может чего изобрету+найду, в результате - поделюсь, еще раз спасибо.
Отредактировано (Окт. 27, 2009 13:13:44)
Офлайн
regallИх и не может быть. Просто по тому что Джанга позволяет работать с любой БД и в каждой из них могут быть свои особенности миграции схемы, а где-то и схемы нет вовсе.
и даже тот мощный South не предоставляет средств для решений 100% случаев миграций…
Офлайн
lorienНе совсем верно. SQLite поддерживает ограниченный вариант ALTER TABLE. Комманда ALTER TABLE в SQLite позволяет переименовывать таблицу или добавлять новую колонку, но невозможно переименовывать (как в вашем случае) удалять и добавлять колонки в таблицы.
* на sqlite не работают команды по изменению колонок т.к. sqlite не поддерживает alter table насколько я понял
lorienНу, насколько я понял проект живой и активно развивается, все еще впереди, все-таки следует учитывать, что фреймворк молодой, и соответственно app-ы под него, так сказать, пока еще не “mature”. Будем надеется на светлое будущее.
* если добавить db_index в колонку, то south не создат индекс o_O
Отредактировано (Окт. 27, 2009 22:15:17)
Офлайн