Eu tenho um programa Python que usa o módulo "threading". Uma vez a cada segundo, meu programa inicia um novo thread que busca alguns dados da web e os armazena em meu disco rígido. Gostaria de usar o sqlite3 para armazenar esses resultados, mas não consigo fazer funcionar. O problema parece ser sobre a seguinte linha:
conn = sqlite3.connect("mydatabase.db")
- Se eu colocar essa linha de código dentro de cada thread, recebo um OperationalError informando que o arquivo de banco de dados está bloqueado. Acho que isso significa que outro segmento abriu mydatabase.db por meio de uma conexão sqlite3 e o bloqueou.
- Se eu colocar esta linha de código no programa principal e passar o objeto de conexão (conn) para cada thread, recebo um ProgrammingError, dizendo que os objetos SQLite criados em uma thread só podem ser usados nesse mesmo thread.
Anteriormente, eu armazenava todos os meus resultados em arquivos CSV e não tinha nenhum desses problemas de bloqueio de arquivo. Esperançosamente, isso será possível com sqlite. Alguma ideia?