Очистка внутреннего pysqlite соединения при разрушении объекта

У меня есть объект с внутренним подключением к базе данных, который активен на протяжении всей своей жизни. В конце выполнения программы соединение должно быть зафиксировано и закрыто. До сих пор я использовал явныйclose метод, но это несколько громоздко, особенно когда в вызывающем коде могут возникать исключения.

Я рассматриваю возможность использования__del__ метод для закрытия, но после некоторого чтения онлайн у меня есть проблемы. Это действительный шаблон использования? Могу ли я быть уверен, что внутренние ресурсы будут освобождены в__del__ правильно?

Это обсуждение поднял аналогичный вопрос, но не нашел удовлетворительного ответа. Я не хочу иметь явноеclose метод и использованиеwith это не вариант, потому что мой объект не используется так просто, как open-play-close, но хранится как элемент другого, более крупного объекта, который использует его во время работы в графическом интерфейсе.

В C ++ есть отлично работающие деструкторы, в которых можно безопасно высвободить ресурсы, поэтому я думаю, что в Python тоже есть что-то согласованное. По какой-то причине, похоже, это не так, и многие в сообществе клянутся против__del__, Какая альтернатива, тогда?