Mam program w języku Python, który korzysta z modułu „wątkowania”. Co sekundę mój program uruchamia nowy wątek, który pobiera dane z sieci i zapisuje je na moim dysku twardym. Chciałbym używać sqlite3 do przechowywania tych wyników, ale nie mogę zmusić go do działania. Wydaje się, że problem dotyczy następującej linii:
conn = sqlite3.connect("mydatabase.db")
- Jeśli umieszczę ten wiersz kodu w każdym wątku, otrzymam OperationalError informujący mnie, że plik bazy danych jest zablokowany. Myślę, że oznacza to, że inny wątek ma otwarty plik mydatabase.db za pośrednictwem połączenia sqlite3 i zablokował go.
- Jeśli umieszczę ten wiersz kodu w programie głównym i przekażę obiekt połączenia (conn) do każdego wątku, otrzymuję błąd ProgrammingError, który mówi, że obiekty SQLite utworzone w wątku mogą być używane tylko w tym samym wątku.
Wcześniej zapisywałem wszystkie wyniki w plikach CSV i nie miałem żadnego z tych problemów z blokowaniem plików. Miejmy nadzieję, że będzie to możliwe dzięki sqlite. Jakieś pomysły?