Не SQL'ем единым или как я попробовал buzhug
Недавно встала задача реализовать один сервис(аналог cron) на питоне. Для души так сказать. Одна из подзадачь: организация хранения данных. При первой итерации было решено использовать SQLite бэкэнд. Поскольку одним из требований к сервису был малый объем занимаемой памяти в процессе работы, т.к. ресурсы моего впс ограничены. Но после маленьких испытаний я понял, то SQLite не очень интересен для меня, как для вечно что-то новое пробующего разработчика, и не так уж и лайт, да и ничего нового. Подумал, а почему бы не использовать какой-нибудь из ORM движков. Стал пробовать и SQLAlchemy и SQLObject. Но эти варианты отпугнули своей тяжеловесность, хотя и интересны в плане изучения не джанговского ORM.
И вот однажды, на одном из регулярно читаемых мной форумов заприметил упоминание одной очень занятной библиотеки buzhug. Как обещают её авторы - мне не надо будет писать SQL запросы, а придется писать list comprehensions or generator expressions
. Заманчиво и интересно.
Попробовал пример из туториала. Понравилось ещё больше. Всё просто и прозрачно. Решил остановить свой выбор на этой библиотеке и познакомиться с ней поближе.
Когда сервис был завершен в своей первой редакции, я осознал, что сделал правильный выбор. Код получился лаконичным и действительно без SQL запросов. Работать с данными удобно. Немного напрягло то, что база представляет собой директорию на диске и то, что имеет ограниченный набор поддерживаемых типов полей (по сути только строки, числа и даты). Хотелось бы ещё чтобы можно было сериализовать объекты, ну или на худой конец списки и словари, pure python как никак. Пока сделал через pickle конвертацию таких объектов в строку.
Одно меня пока огорчает, проверить все функции(особенно различные выборки данных) пока не получилось. Требования сервиса ограничились банальной CRUD’ом и какие-то мудреные селекты не понадобились. Но я сам себе придумал ещё одну задачу(менеджер очередей), в которой как мне кажется buzhug сможет раскрыть весь (ну или почти весь) свой потенциал.
О новых эмоциях обязательно напишу.