sto facendo qualcosa di simile ...Che cosa succede se non chiudo la connessione al database in Python SQLite
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute(...)
with
impegna automaticamente le modifiche. Ma i documenti non dicono nulla sulla chiusura della connessione.
In realtà io posso usare conn
in dichiarazioni successive (che ho testato). Quindi sembra che il gestore di contesto NON stia chiudendo la connessione.
Devo chiudere manualmente la connessione. Cosa succede se lo lascio aperto?
EDIT
Le mie conclusioni ...
- Il collegamento non è chiusa nel contesto direttore, ho testato e confermato. Su
__exit__
, il manager contesto impegna solo le modifiche da fareconn.commit()
with conn
ewith sqlite3.connect(db_filename) as conn
sono uno e la stessa cosa. Quindi, utilizzando sarà ancora mantenere la connessione vivawith
dichiarazione non crea un nuovo ambito, quindi tutte le variabili create all'interno della suite di con saranno accessibili all'esterno- Infine, si dovrebbe chiudere la connessione manualmente
Se lo si lascia aperto, rimane aperto fino a quando non viene eliminato dall'ambito e dalla garbage collection. A quel punto dovrebbe essere chiuso in modo sicuro (e credo che 'sqlite3' lo faccia). Ma meglio prevenire che curare. Chiudi le connessioni quando non le utilizzerai più. – Avaris
È bello vedere un utente SO con 6 rappresentanti tornare e rispondere alle domande di risarcimento che ritengono non rispondano alla domanda. Un grande +1 lì. – Droogans