pybb - бодрячком!
Сегодня мои ручки добрались таки до pybb и я смог завершить одно очень важное дело. Раньше при просмотре любого экрана количество запросов к базе данных переваливало за сотню. Сейчас на каждый экран приходится около 10-15 запросов. Это не верх эффективности, но, по крайней мере, такое число уже не заставляет шевелиться волосы на голове :-)
Далее у меня по плану переписать ещё раз код работы с sape.ru и выложить его отдельным модулем на hg.pydev.ru. Последний раз я в усмерть отрефакторил этот код, он стал в несколько раз больше, хотя делать нового не стал ровным счётом ничего… Юзать такое месиво не слишком охото :-) Это позволит мне перевести на pybb ещё один мой форум it-omsk.com, который я не пока не “трансформирую” из PHP(PunBB) в PYBB именно из-за нежелания потерять доход с sape.ru.
slav0nic грозился, что они переведут форум сайта python.su на pybb. Мне кажется, теперь это уже можно сделать безболезненно. Практически все фичи punbb поддерживаются, импортилка (punbb—>pybb) импортит всё кроме автатаров, сотни запросов больше не генерируются.
Так. Про велосипед ещё хотел сказать. Замутил я, значит, такую штуку. Это кастомная команда, которая позволяет вывести список миграций или выполнить миграцию с указанным именем. Миграция — это обыкновенный python скрипт, в котором можно изменять структуру БД через django.db.connection.cursor.execute или работать с объектами через ORM. Никаких автоматических генераций SQL нет. Нужные CREATE/ALTER-инструкции пишутся ручками. Хочу для каждого изменения схемы БД PYBB создавать такие миграции, чтобы пользователи форума могли делать upgrade без головной боли. Сейчас, кстати, уже есть две миграции. Вот они. С помощью них я успешно апгрейднул pydev.ru форум.
Голые же sql-миграции (в виде SQL-команд) мне не нравится по двум причинам:
- не всегда можно через SQL описать алгоритм преобразования данных
- любой алгоритм, написанный с использованием ORM, будет кроссплатформенным, в отличие от SQL-кода, который может работать в mysql, но сломаться в postgres.
Если среди django-фреймворков для миграций есть что-то похожее, дайте ссылку, плиз.






Comments
http://south.aeracode.org/ — я пользую для миграций
Спасибо за ссылку. Действительно, очень похоже.
да, тоже хотел сказать про South. вполне вменяемая штука.
Потыкал, очень приятный форум. А хде конвертор из punbb?
Кстати, в footer.html не хватает {% load i18n %}
Конвертер оформлен в виде команды: ./manage.py import_punbb выведет список опций.
Там у меня чёрная магия с кодировками, которую я уже сам не понимаю. Главное, что это позволило мне импортировать содержимое punbb mysql таблиц, в случае когда в базе лежал cp1251 контент, а кодировка таблиц была latin1.