que estoy haciendo algo como esto ...¿Qué pasa si no cierra la conexión de base de datos SQLite en Python
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute(...)
with
comete automáticamente los cambios. Pero los documentos no dicen nada acerca de cerrar la conexión.
Actualmente puedo usar conn
en declaraciones posteriores (que he probado). Por lo tanto, parece que el administrador de contexto NO está cerrando la conexión.
Tengo que cerrar manualmente la conexión. ¿Qué pasa si lo dejo abierto?
EDITAR
Mis conclusiones ...
- La conexión no está cerrada en el gestor de contexto, he probado y confirmado. Al
__exit__
, el gestor de contexto compromete únicamente a los cambios por hacerconn.commit()
with conn
ywith sqlite3.connect(db_filename) as conn
son una y la misma cosa. Así, utilizando ya sea seguirá siendo mantener la conexión vivawith
declaración no crear un nuevo ámbito, por lo que todas las variables creadas dentro de la suite de la será accesible fuera de ella- Por último, se debe cerrar la conexión manualmente
Si lo deja abierto, permanece abierto hasta que se sale del alcance y de la recolección de basura. En ese punto, podría cerrarse de manera segura (y creo que 'sqlite3' hace eso). Pero es mejor estar a salvo que lamentar. Cierre sus conexiones cuando ya no las use. – Avaris
Es bueno ver a un usuario de SO con 6 repeticiones y contestar las respuestas que sienten que no están respondiendo la pregunta. Un gran +1 allí. – Droogans