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