У меня есть программа Python, которая использует модуль "threading". Раз в секунду моя программа запускает новый поток, который извлекает некоторые данные из Интернета и сохраняет эти данные на моем жестком диске. Я хотел бы использовать sqlite3 для хранения этих результатов, но я не могу заставить его работать. Проблема заключается в следующей строке:
conn = sqlite3.connect("mydatabase.db")
- Если я помещаю эту строку кода в каждый поток, я получаю OperationalError, говорящий мне, что файл базы данных заблокирован. Я предполагаю, что это означает, что другой поток имеет mydatabase.db через соединение sqlite3 и заблокировал его.
- Если я поместил эту строку кода в основную программу и передаю объект соединения (conn) для каждого потока, я получаю ProgrammingError, говоря, что объекты SQLite, созданные в потоке, могут использоваться только в том же потоке.
Раньше я сохранял все свои результаты в файлах CSV и не имел ни одной из этих проблем с блокировкой файлов. Надеюсь, это будет возможно с помощью sqlite. Любые идеи?