@cybertailor
Операции записи я делаю через:
with self.db as conn:
conn.execute(…)
Контекстный менеджер начинает транзакцию и делает коммит при выходе из него, если не произошло ошибок, иначе роллбэк.
Между функциями передаю sqlite3.Connection (точнее, свой класс-обёртку, который реализует все CRUD).
Курсоры вообще не нужно самостоятельно менеджить, все execute вполне нормально делать на объекте Connection, а насчёт закрытия курсоров позаботится GC.
