Введение
В проектах, где не требуется полноценная реляционная база данных, но нужно надёжно сохранять небольшие объёмы данных, на помощь приходит PickleDB – лёгкая база данных. Эта библиотека написана на чистом Python, не требует отдельного сервера и хранит данные в формате JSON.
PickleDB идеально подходит для CLI-утилит, хранения конфигураций, пользовательских токенов, кэша, временных данных и микропроектов. Она сочетает простоту использования и достаточно богатый функционал для небольших задач.
Установка и подключение
Установить PickleDB можно с помощью pip:
Создание базы и подключение:
Параметр auto_dump=True
означает, что база будет автоматически сохраняться после каждого изменения.
Принцип работы и структура хранения
-
Данные хранятся в формате JSON
-
База представляет собой ключ-значение хранилище
-
Поддерживает вложенные словари и списки
-
Все изменения сохраняются в файл, что делает базу постоянной
Пример структуры:
Добавление и обновление данных
Простое значение
Вложенный словарь
Обновление значения
Чтение и удаление данных
Получение значения
Проверка наличия ключа
Удаление ключа
Списки и структуры данных
PickleDB поддерживает списки через методы lcreate
, ladd
, lgetall
, lpop
, lrem
:
Удаление элемента из списка:
Получение длины списка:
Постоянное и временное хранение
-
auto_dump=True
— данные сохраняются автоматически -
Если
auto_dump=False
, нужно вручную вызватьdb.dump()
Можно использовать временный файл или in-memory базу с помощью mock-файла:
Сценарии использования PickleDB
-
Хранение пользовательских настроек
-
Временные токены доступа
-
Кэширование данных между вызовами функций
-
Простая БД для CLI-утилит
-
Логирование событий в JSON-формате
Интеграция с Python-приложениями
С Flask
С FastAPI
Преимущества и ограничения PickleDB
Преимущества:
-
Простота и минимализм
-
Не требует установки СУБД
-
Формат JSON — читаемый и переносимый
-
Поддержка словарей, списков, вложенных структур
Ограничения:
-
Не предназначен для хранения больших объёмов данных
-
Нет индексов, фильтрации, транзакций
-
Все данные загружаются в память при старте
Сравнение с другими лёгкими СУБД
СУБД | Хранение | Поддержка списков | Работа с файлами | Подходит для |
---|---|---|---|---|
PickleDB | JSON | Да | Да | Конфигурации, токены, CLI |
TinyDB | JSON | Частично | Да | Более сложная фильтрация |
SQLite | SQL | Нет | Да | Табличные данные, аналитика |
Redis | RAM | Да | Нет | Кэш, сессии, распределённые системы |
Тестирование с PickleDB
-
Используйте временные файлы или
:memory:
режим -
Удаляйте ключи перед/после тестов:
-
Можно легко сериализовать/десериализовать тестовые данные
Часто задаваемые вопросы (FAQ)
1. Что такое PickleDB?
Это лёгкая и простая база данных, основанная на JSON, реализованная на Python.
2. Поддерживает ли PickleDB списки?
Да, с помощью методов lcreate
, ladd
, lgetall
.
3. Нужно ли сохранять данные вручную?
Только если auto_dump=False
. Иначе всё сохраняется автоматически.
4. Подходит ли PickleDB для продакшна?
Только в небольших проектах, скриптах и вспомогательных задачах.
5. Что произойдёт при сбое записи?
Файл JSON может быть повреждён, рекомендуется использовать резервные копии.
6. Можно ли использовать PickleDB с Flask или FastAPI?
Да, он легко интегрируется как лёгкое хранилище.
Полный справочник по работе с PickleDB
— лёгкой key-value БД на Python
Установка
Подключение к базе
Параметр | Назначение |
---|---|
'data.db' |
Путь к JSON-файлу. |
auto_dump=True |
Автоматически сохранять изменения. |
Основные операции
Установка значений
Получение значений
Удаление ключей
Работа с булевыми значениями
Проверка наличия ключа
Получение всех ключей и значений
Инкремент / декремент
Работа со списками
Работа с JSON-объектами (вложенные словари)
Удаление
Сохранение вручную
Если auto_dump=False
:
Пример использования
Когда использовать PickleDB
-
Для хранения конфигураций, токенов, логинов и параметров.
-
В CLI-утилитах, ботах, микроскриптах.
-
Когда нужна максимальная простота и один JSON-файл.
-
Для тестовых и обучающих целей.
Заключение
PickleDB – лёгкая база данных отлично подходит для небольших проектов, где важно быстро сохранять и извлекать данные без необходимости разворачивать полноценную СУБД. Благодаря поддержке ключей, списков, вложенных структур и авто-сохранению, она обеспечивает минимально необходимый функционал для локального хранения данных.