У мене є програма Python, яка використовує модуль "потоків". Раз на секунду моя програма запускає новий потік, який отримує деякі дані з Інтернету та зберігає ці дані на моєму жорсткому диску. Я хотів би використовувати sqlite3 для зберігання цих результатів, але я не можу змусити його працювати. Проблема, схоже, стосується такого рядка:
conn = sqlite3.connect("mydatabase.db")
- Якщо я розміщу цей рядок коду всередині кожного потоку, я отримую OperationalError, який повідомляє мені, що файл бази даних заблокований. Я думаю, це означає, що інший потік відкрив mydatabase.db через з'єднання sqlite3 і заблокував його.
- Якщо я поміщу цей рядок коду в основну програму і передаю об'єкт з'єднання (conn) кожному потоку, я отримую ProgrammingError, кажучи, що об'єкти SQLite, створені в потоці, можуть використовуватися лише в цьому ж потоці.
Раніше я зберігав усі свої результати у файлах CSV і не мав жодної з цих проблем із блокуванням файлів. Сподіваємось, це буде можливо з sqlite. Будь-які ідеї?