Limpieza de una conexión interna de pysqlite en la destrucción de objetos

Tengo un objeto con una conexión de base de datos interna que está activa durante toda su vida útil. Al final de la ejecución del programa, la conexión debe confirmarse y cerrarse. Hasta ahora he usado un @ explíciclose, pero esto es algo engorroso, especialmente cuando pueden ocurrir excepciones en el código de llamada.

Estoy considerando usar la__del__ método para cerrar, pero después de leer en línea, tengo dudas. ¿Es este un patrón de uso válido? ¿Puedo estar seguro de que los recursos internos se liberarán en__del__ correctamente?

Esta discusión planteó una pregunta similar pero no encontró una respuesta satisfactoria. No quiero tener una @ explíciclose método, y usandowith no es una opción, porque mi objeto no se usa simplemente como abrir-jugar-cerrar, sino que se mantiene como miembro de otro objeto más grande, que lo usa mientras se ejecuta en una GUI.

C ++ tiene destructores que funcionan perfectamente donde uno puede liberar recursos de forma segura, por lo que me imagino que Python también tiene algo acordado. Por alguna razón, parece no ser el caso, y muchos en la comunidad votan en contra de__del__. ¿Cuál es la alternativa, entonces?

Respuestas a la pregunta(4)

Su respuesta a la pregunta