====== Мотивация ====== При всех достоинствах [[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|См. ОДо]]. Метод берётся как есть.