Очистка внутреннего pysqlite соединения при разрушении объекта
У меня есть объект с внутренним подключением к базе данных, который активен на протяжении всей своей жизни. В конце выполнения программы соединение должно быть зафиксировано и закрыто. До сих пор я использовал явныйclose
метод, но это несколько громоздко, особенно когда в вызывающем коде могут возникать исключения.
Я рассматриваю возможность использования__del__
метод для закрытия, но после некоторого чтения онлайн у меня есть проблемы. Это действительный шаблон использования? Могу ли я быть уверен, что внутренние ресурсы будут освобождены в__del__
правильно?
Это обсуждение поднял аналогичный вопрос, но не нашел удовлетворительного ответа. Я не хочу иметь явноеclose
метод и использованиеwith
это не вариант, потому что мой объект не используется так просто, как open-play-close, но хранится как элемент другого, более крупного объекта, который использует его во время работы в графическом интерфейсе.
В C ++ есть отлично работающие деструкторы, в которых можно безопасно высвободить ресурсы, поэтому я думаю, что в Python тоже есть что-то согласованное. По какой-то причине, похоже, это не так, и многие в сообществе клянутся против__del__
, Какая альтернатива, тогда?