====== Мотивация ======
При всех достоинствах [[https://peps.python.org/pep-0249/|Python DB API 2.0]], он многословен. С одной стороны, возможно, это связано с API библиотек, работы с БД, возможно с источником вдохновения, возможно с привычками. Однако для работы с такими легковесными СУБД как SQLite, особого пафоса в вызовах не хочется, но очень хочется большей простоты.
Данный инструмент пытается её дать.
====== Классы ======
^ Имя ^ Описание ^
| ''DB'' | Объект подключения к БД |
| ''DBError'' | Объект исключений при работе с БД |
| ''IntegrityError'' | Отдельно проброшенный класс, отвечающий за проверки целостности на стороне СУБД. Дабы иметь возможность адекватно реагировать на неуникальные значения или иные попытки нарушить целостность данных в БД |
===== DB =====
Для создания подключения нужно дать выполнить:
DB(db_file)
^ Параметр ^ Тип ^ Описание ^
| ''db_file'' | ''str'' | Имя файла БД либо строка '':memory:'', если нет необходимости в хранении данных, и они будут жить только в ОЗУ |
==== Выполнение запроса ====
Для выполнения запроса достаточно передать его в качестве параметра при вызове объекта подключения.
memdb = DB(':memory:')
for rowid, txt in memdb('SELECT rowid, txt FROM t'):
print(id, txt)
**Возвращает** функция объект курсора (в терминах DB API), в котором уже исполнен запрос, и из которого можно получить запрошенные данные. Работа с этим курсором [[https://docs.python.org/3/library/sqlite3.html#cursor-objects|описана в документации]]
Параметры также даны в [[https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute|соответствующем разделе документации]]. Они пробрасываются непосредственно в ''execute''
==== cq() ====
Версия [[#Выполнение_запроса]] только перед выдачей курсора на объекте соединения (в терминах DB API 2.0) исполняется метод ''commit()''. В случае возбуждения исключения немедленно исполняется ''rollback()'' и исключение пробрасывается в вызывающую метод процедуру.
Параметры у функции те же.
==== commit() ====
[[https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.commit|См. ОДо]]. Метод берётся как есть.
==== rollback() ====
[[https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.rollback|См. ОДо]]. Метод берётся как есть.