Ho un programma Python che utilizza il modulo "threading". Una volta al secondo, il mio programma avvia un nuovo thread che recupera alcuni dati dal web e li memorizza sul mio disco rigido. Vorrei utilizzare sqlite3 per memorizzare questi risultati, ma non riesco a farlo funzionare. Il problema sembra riguardare la seguente riga:
conn = sqlite3.connect("mydatabase.db")
- Se inserisco questa riga di codice all'interno di ogni thread, ottengo un OperationalError che mi dice che il file del database è bloccato. Immagino che questo significhi che un altro thread ha mydatabase.db aperto tramite una connessione sqlite3 e lo ha bloccato.
- Se inserisco questa riga di codice nel programma principale e passo l'oggetto di connessione (conn) a ciascun thread, ottengo un'eccezione ProgrammingError, che dice che gli oggetti SQLite creati in un thread possono essere utilizzati solo in quello stesso thread.
In precedenza memorizzavo tutti i miei risultati in file CSV e non avevo nessuno di questi problemi di blocco dei file. Si spera che questo sarà possibile con sqlite. Qualche idea?