Вспоминаю, что когда-то я обещал писать про django.
Сегодняшняя тема — эволюция баз данных для django.
Я — один из двух создателей deseb.
deseb — это Django External Schema Evolution Branch, то есть инструмент для эволюции баз данных для django. Да, юные любители ruby on rails, это практически ваши миграции, только с более простым DSL и конструирующиеся автоматически по изменениям модели.
Ну а тем, кто с rails не знаком, расскажу поподробнее.


Основа django — модели. Обычно они находятся в файлах models.py в разных папках внутри проекта. deseb умеет сравнивать содержимое моделей и текущую схему базы данных, и вносить в эту схему изменения. Таким образом, программист django вообще может не знать sql, или же изучать sql, глядя на вывод django и deseb, но никогда не писать sql самому. Наконец-то! :)
Сообразительные, но малознакомые с django, спросят — а как же переименование?
Как deseb поймет, что столбец или таблицу нужно переименовать? Конечно, он и не поймёт, пока вы не добавите полям и таблицам для переименования дополнительный аттрибут aka=… для указания их старых имён! Вот из-за этого аттрибута и пришлось сделать deseb внешним относительно django.

Ссылки по теме:
главная страница проекта — http://deseb.googlecode.com/
подробное рассмотрение миграций для django: http://code.djangoproject.com/wiki/SchemaEvolution

Проект находится в альфа-статии. Текущие хорошо поддерживаемые базы данных — postgresql и mysql. Плохо поддерживаемый — sqlite.
Я знаю несколько имеющихся мелких проблем, однако, скорее всего, они будут пребывать в состоянии “не дошли руки”, пока вы мне не поможете.
С радостью и очень быстро, скорее всего в тот же день, приму и закоммичу багфиксы ;)
Add post to: Delicious Reddit Slashdot Digg Technorati Google