Diciamo che si ha il seguente codice:Come sapere se il collegamento o il cursore del database SQLite Python è chiuso?
import sqlite3
conn = sqlite3.connect('mydb')
cur = conn.cursor()
# some database actions
cur.close()
conn.close()
# more code below
Se provo ad utilizzare i conn
o cur
oggetti in seguito, come potrebbe dire che mi sono chiusi? Non riesco a trovare un metodo .isclosed()
o qualcosa del genere.
Il metodo è sano, ma evita di fare un "SELECT * FROM mytable" mentre puoi fare un molto più leggero "SELECT one_column FROM mytable LIMIT 1'. Il primo è orribilmente inefficiente se hai un database non piccolo. –
grazie a @pitrou, aggiornato per tenerne conto. – bernie
@AntoineP. stai confondendo SQLite con altri database. Non c'è differenza nella quantità di lavoro svolto da SQLite. Non calcola tutti i risultati per una query in anticipo, ma fa la minima quantità di lavoro possibile per dare la prima riga del risultato. La seconda riga del risultato viene elaborata solo quando lo chiedi. Di conseguenza il limite non ha alcun effetto. In ogni caso, una query migliore è quella che non dipende dallo schema, ad es. PRAGMA user_version. –