Введение
Часто разработчики сталкиваются с необходимостью временно сохранять данные или быстро построить прототип с базой данных. При этом не всегда удобно использовать полноценные ORM, такие как SQLAlchemy. Библиотека Dataset – работа с базами в стиле Pandas предлагает простой и удобный интерфейс к SQL-базам данных с минимумом кода, при этом сохраняя гибкость.
Dataset делает работу с базой такой же лёгкой, как с DataFrame: автоматическое создание таблиц, вставка словарей, фильтрация и экспорт данных — всё это доступно буквально в несколько строк кода.
Установка и подключение к базе
Установить библиотеку можно с помощью pip:
Подключение к базе:
Поддерживаются и другие СУБД:
Принципы работы Dataset
-
Таблицы создаются автоматически при первом обращении
-
Структура формируется динамически: новые поля добавляются при вставке
-
Данные сохраняются в виде словарей Python
-
API интуитивно понятное: нет SQL-запросов — только вызовы методов
Создание и вставка данных
Поиск и фильтрация записей
Обновление и удаление данных
Экспорт и импорт данных
Также поддерживается экспорт в JSON, а данные можно импортировать из словарей и списков.
Интеграция с Pandas и обработка данных
Или наоборот:
Работа с транзакциями
Транзакция откатывается при исключении, сохраняется при завершении блока.
Использование с SQLite, PostgreSQL и другими
В зависимости от URI подключается нужный движок:
Dataset использует SQLAlchemy под капотом, поэтому совместим практически со всеми SQL-базами.
Расширенные возможности Dataset
-
Работа с вложенными словарями
-
Автоматическая индексация (если явно указать
primary_id
) -
Поддержка bulk-операций
-
Возможность использовать
upsert()
для обновления или вставки
Интеграция с Flask, FastAPI, CLI-приложениями
Dataset отлично подходит для:
-
CLI-программ — как простая база без настройки
-
Flask-приложений — быстрое логирование, сессии
-
FastAPI — для микросервисов и prototyping
Сравнение с ORM и другими библиотеками
Библиотека | SQL-запросы | ORM | Простота | Подходит для |
---|---|---|---|---|
Dataset | Нет | Нет | Очень высокая | Скрипты, прототипы |
SQLAlchemy | Да | Да | Средняя | Сложные проекты |
Pandas | Нет | Нет | Высокая | Анализ данных |
TinyDB | Нет | Нет | Высокая | NoSQL, хранение JSON |
Тестирование и прототипирование
Идеально подходит для in-memory работы:
Можно быстро очистить таблицу:
Часто задаваемые вопросы (FAQ)
1. Что такое Dataset?
Это Python-библиотека для работы с SQL-базами в стиле Pandas — без SQL-запросов и с простым API.
2. Какие СУБД поддерживаются?
SQLite, PostgreSQL, MySQL, MSSQL и другие через SQLAlchemy.
3. Можно ли использовать Dataset с Pandas?
Да, данные можно импортировать/экспортировать в DataFrame.
4. Поддерживаются ли транзакции?
Да, через with db:
или вручную.
5. Подходит ли Dataset для продакшна?
Для лёгких задач — да. Для сложных бизнес-логик лучше использовать ORM.
6. Что произойдёт, если таблицы не существует?
Она будет создана автоматически.
Полный справочник по ключевым функциям и модулям библиотеки Dataset для Python
Установка
Подключение к базе данных
Функция | Описание |
---|---|
dataset.connect(url) |
Подключается к базе по URI. |
URI может быть:
-
SQLite:
"sqlite:///file.db"
-
PostgreSQL:
"postgresql://user:pass@localhost/dbname"
-
MySQL:
"mysql://user:pass@host/dbname"
Доступ к таблицам
Метод | Описание |
---|---|
db["table_name"] |
Получает таблицу (создает при необходимости). |
table = db.get_table("name") |
Альтернатива через метод. |
Вставка данных
Метод | Описание |
---|---|
table.insert(dict) |
Вставляет одну запись. |
table.insert_many([dict, ...]) |
Массовая вставка. |
table.upsert(dict, keys=[...]) |
Вставка или обновление (по ключам). |
Получение данных
Метод | Описание |
---|---|
table.all() |
Получить все записи. |
table.find(**filters) |
Найти записи по фильтру. |
table.find_one(**filters) |
Найти одну запись. |
table.distinct("field") |
Уникальные значения поля. |
Обновление данных
Метод | Описание |
---|---|
table.update(dict, keys=[...]) |
Обновляет записи по ключам. |
table.upsert(dict, keys=[...]) |
Вставка или обновление. |
Удаление данных
Метод | Описание |
---|---|
table.delete(**filters) |
Удаляет записи по условию. |
Работа с транзакциями
Контекст | Описание |
---|---|
with db as tx: |
Автоматический commit/rollback. |
Выполнение произвольного SQL
Метод | Описание |
---|---|
db.query(sql) |
Выполняет SELECT-запрос. |
db.executable(sql) |
INSERT/UPDATE/DELETE запрос. |
Метаданные и служебные методы
Метод | Описание |
---|---|
db.tables |
Список всех таблиц. |
table.columns |
Список всех колонок в таблице. |
db.create_table(name, primary_id=..., primary_type=...) |
Явное создание таблицы. |
Использование с SQLite
Пример полного скрипта
Совместимость
Интеграция | Применение |
---|---|
SQLAlchemy | Используется под капотом. |
SQLite/PostgreSQL/MySQL | Поддерживаются через SQLAlchemy URI. |
Pandas | Можно использовать pd.read_sql_table("table", db.engine) . |
Flask/FastAPI | Можно подключать как простой слой доступа к данным. |
Заключение
Dataset – работа с базами в стиле Pandas — это идеальный инструмент для быстрого прототипирования, временного хранения данных и автоматизации. С интуитивным API, минимальной настройкой и совместимостью с большинством SQL-баз данных, Dataset делает работу с БД простой и понятной даже для новичков.