Ответ 1
Вот что означает эта ошибка:
SQLite предназначен для облегченной базы данных и поэтому не может поддерживать высокий уровень параллелизма. OperationalError: база данных заблокирована. Ошибки указывают на то, что ваше приложение испытывает больше параллелизма, чем sqlite может обработать в конфигурации по умолчанию. Эта ошибка означает, что один поток или процесс имеет монопольную блокировку соединения с базой данных, а другой поток истек тайм-аут в ожидании снятия блокировки.
Оболочка Python SQLite имеет значение тайм-аута по умолчанию, которое определяет, как долго второй поток может ожидать блокировки до истечения времени ожидания, и вызывает ошибку OperationalError: database is locked is.
Если вы получаете эту ошибку, вы можете решить ее:
Переключение на другую базу данных. В определенный момент SQLite становится слишком "легким" для реальных приложений, и такого рода ошибки параллелизма указывают, что вы достигли этой точки.
Переписать свой код, чтобы уменьшить параллелизм и обеспечить кратковременность транзакций в базе данных.
Увеличьте значение времени ожидания по умолчанию, установив параметр базы данных времени ожидания.
Возможно, у вас есть другое соединение в вашем коде, которое не закрыто или не зафиксировано, и это приводит к этой ошибке. Обычно пытается выполнить второе execute
когда оно уже заблокировано другим. Если вы действительно хотите иметь свои параллельные транзакции, вам нужна СУБД.