"dataset" - простая работа с SQL в питоне

Для ЛЛ: разбирался как сделать простые SQL-вещи в питоне просто. Нашел "dataset" - питоновская обёртка для SQL-запросов: не ORM, не DB-API а что-то среднее.

Пост от новичка к ещё более новичкам.
Для моего маленького ТГ-бота понадобилось собирать данные, и очевидно хранить их в базе данных. Как я понял, в питоне для этого есть два подхода: по взрослому писать SQL-запросы либо использовать ORM - штука, которая сопоставляет некие питоновские классы с записями в БД. Ясен-красен второе гораздо приятнее, т.к. не обязательно знать SQL, тебя берегут от факапов с хакерскими запросами слишком продвинутых пользователей и переход от одной БД к другой делается изменением одной строчки вначале.

Почитал я про разные ORMы, и выбрал peewee. Пиви прикольный, простой в использовании и лаконичный, вобщем самое то для чайника. Изрядно его поковыряв уткнулся в проблему - не получается создавать каждому пользователю свою таблицу. Не факт что это в принципе хороший подход, но мне показалось прикольным, а значит - нужно искать варианты. И вариант был найден - штуковина под названием "dataset"

"dataset" - простая работа с SQL в питоне Программирование, Python, SQL, Новичок

Dataset инкапсулирует SQL-запросы внутри питоновского кода, но при этом не превращает их в какие-то сущности типа классов. Тупо SQL-запросы на питоне. Круто-же!! Выглядит это так:

коннектимся к БД

db = dataset.connect( 'mysql://user:password@localhost/mydatabase' )

создаем таблицу (или открываем, если она уже есть)

table = db[ 'user' ]

вставляем запись

table.insert( dict( name='John Doe', age=46, country='China' ) )

ищем запись

chinese_users = table.find( country='China' )
elderly_users = table.find( age={'>=': 70} )

По мне - просто и удобно, и конечно можно использовать всякие питоновские штуки:

for user in db['user']:
print(user['age'])


with dataset.connect() as tx:
tx['user'].insert(dict(name='John Doe', age=46, country='China'))

Надеюсь кому-то пригодится! =)
Всем удач!

Лига программистов

1.5K постов11.4K подписчика

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества