J'ai un programme Python qui utilise le module "threading". Une fois par seconde, mon programme démarre un nouveau thread qui récupère des données sur le Web et stocke ces données sur mon disque dur. Je voudrais utiliser sqlite3 pour stocker ces résultats, mais je ne peux pas le faire fonctionner. Le problème semble concerner la ligne suivante:
conn = sqlite3.connect("mydatabase.db")
- Si je mets cette ligne de code dans chaque thread, j'obtiens un OperationalError m'indiquant que le fichier de base de données est verrouillé. Je suppose que cela signifie qu'un autre thread a ouvert mydatabase.db via une connexion sqlite3 et l'a verrouillé.
- Si je mets cette ligne de code dans le programme principal et que je passe l'objet de connexion (conn) à chaque thread, j'obtiens un ProgrammingError, disant que les objets SQLite créés dans un thread ne peuvent être utilisés que dans ce même thread.
Auparavant, je stockais tous mes résultats dans des fichiers CSV et je n'avais aucun de ces problèmes de verrouillage de fichier. Espérons que cela sera possible avec sqlite. Des idées?