Введение
Современные приложения не всегда нуждаются в мощных и сложных СУБД. В случаях, когда проект не требует масштабируемости или высокой скорости обработки большого объёма данных, достаточно лёгкой и встроенной базы. TinyDB – NoSQL база данных, полностью написанная на Python, представляет собой удобное и простое решение для хранения структурированных данных без SQL.
TinyDB сохраняет данные в формате JSON и не требует установки сервера. Это делает её идеальной для скриптов, небольших CLI-инструментов, десктопных приложений и образовательных проектов.
Установка и базовая настройка
Установить TinyDB можно одной строкой:
Создание базы:
Создание in-memory базы:
Основы структуры данных TinyDB
-
TinyDB хранит данные в виде списка документов (словари)
-
Каждый документ имеет уникальный
doc_id
-
Поддерживаются типы: строки, числа, списки, словари, булевы значения и null
Добавление, обновление, удаление данных
Вставка
Множественная вставка:
Обновление
Удаление
Фильтрация и поиск документов
Поиск по значению:
Комбинированные условия:
Работа с несколькими таблицами
TinyDB поддерживает несколько таблиц в одном файле:
Хранение в памяти и на диске
TinyDB по умолчанию сохраняет данные в db.json
. Для временных или тестовых данных используйте:
Можно использовать собственные классы хранения, если нужно сохранить данные, например, в SQLite или Redis.
Расширенные возможности TinyDB
-
Поддержка middleware (например,
CachingMiddleware
) -
Создание пользовательских индексов
-
Поддержка сериализации и кастомных объектов через hook-методы
Интеграция с Python-приложениями
TinyDB легко интегрируется в:
-
CLI-утилиты (как лёгкая база настроек)
-
Flask-приложения (как кэш или временное хранилище)
-
FastAPI (например, в background-тасках)
Пример с Flask:
TinyDB vs другие NoSQL решения
СУБД | Тип хранения | Установка сервера | Поддержка запросов | Подходит для |
---|---|---|---|---|
TinyDB | JSON-файл | Нет | Да | Лёгкие приложения, CLI |
MongoDB | Документная | Да | Да | Веб-приложения, API |
Redis | В памяти | Да | Ограниченно | Кэш, сессии, очереди |
SQLite | Реляционная | Нет | SQL | Локальные БД, отчёты |
Ограничения и лучшие практики
-
Не рекомендуется для больших объёмов данных (медленно при 10k+ записей)
-
Не поддерживает сложные агрегаты или JOIN
-
Файл JSON может быть повреждён при внезапном завершении работы
-
Следует использовать
close()
при завершении работы
Тестирование с TinyDB
Подходит идеально:
Удаление всех данных:
Часто задаваемые вопросы (FAQ)
1. Что такое TinyDB?
Это лёгкая NoSQL база данных на Python, сохраняющая данные в JSON.
2. Подходит ли TinyDB для продакшн?
Только для небольших задач, конфигураций или временных хранилищ.
3. Как фильтровать записи в TinyDB?
С помощью Query()
и логических операторов (&
, |
, ~
).
4. Можно ли использовать TinyDB без записи на диск?
Да, с MemoryStorage
.
5. Есть ли поддержка транзакций?
Нет, только атомарные операции записи.
6. Поддерживает ли TinyDB вложенные структуры?
Да, поиск возможен с помощью вложенных ключей (User.profile.name
).
Полный справочник по работе с TinyDB
— лёгкой JSON-базой данных для Python
Установка
Подключение к базе
Вы можете также использовать в памяти (без файла):
Работа с таблицами
Вставка данных
Метод | Описание |
---|---|
insert(doc) |
Вставка одного документа. |
insert_multiple([docs]) |
Вставка нескольких документов. |
Чтение данных
Поиск с помощью Query
:
Обновление данных
Использование функции:
Удаление данных
Удаление всех данных:
Поддержка вложенных данных
TinyDB поддерживает словари и списки:
Поиск по вложенным полям:
Проверка наличия документа
Получение по doc_id
Работа с несколькими таблицами
Кастомное хранилище (например, с шифрованием)
Пример: мини-база пользователей
Когда использовать TinyDB
-
Для маленьких локальных приложений и офлайн-хранилищ.
-
При разработке CLI-утилит, конфигураций, данных для тестов.
-
Когда не нужен полноценный сервер БД.
-
Когда важна простота и читаемость данных (JSON-файл).
Заключение
TinyDB – NoSQL база данных — идеальный инструмент для простых проектов, прототипов и утилит, где не требуется мощная и тяжёлая СУБД. Она сочетает удобство, понятный API и полную интеграцию с Python-кодом, позволяя разработчикам быстро сохранять, искать и обновлять данные без лишней сложности.