изначально я сделал так:
создаем класс Sqlite, который подключается к БД
все потоки обращаются к этому классу и пишут/читают в БД
но оказалось что нельзя создать объект в одном классе и использовать в другом
поэтому я стал создавать объект внутри потока
соответственно каждый поток подключается к БД и пишет в неё
при невысокой интенсивности чтения/записи все было нормально, но когда потоки стали постоянно коммитить изменения в БД - стал вылезать эксепшен “sqlite3.OperationalError: database is locked”
погуглил, советуют для каждой операции вызывающей cursor.execute() - подключаться отдельно и после выполнения освобождать курсор cursor.close()
попробовал - в результате скрипт сожрал 100% проца, постоянно подключаясь к БД и когда я попытался убить потоки - также вылезли эксепшены “sqlite3.OperationalError: database is locked”
подскажите, как делать правильно?
как в питоне ставить локи на время обращения к курсору, чтобы другие потоки смиренно ждали?