Это означает, что эта ошибка означает:
SQLite означает легкую базу данных и, следовательно, не может поддерживать высокий уровень параллелизма. Ошибки OperationalError: ошибки в базе данных указывают на то, что ваше приложение испытывает больше параллелизма, чем sqlite может обрабатывать по умолчанию. Эта ошибка означает, что один поток или процесс имеет исключительную блокировку соединения с базой данных, а другой поток истекает, ожидая освобождения блокировки.
Оболочка SQLite Python имеет значение тайм-аута по умолчанию, которое определяет, как долго второй потоку разрешено дождаться блокировки до того, как он истечет, и вызывает ошибку OperationalError: database заблокирована.
Если вы получаете эту ошибку, вы можете ее решить:
Переход на другой сервер базы данных. В какой-то момент SQLite становится слишком «легким» для реальных приложений, и эти разновидности ошибок параллелизма указывают на то, что вы достигли этой точки.
Перезаписывание кода для уменьшения параллелизма и обеспечения коротких транзакций базы данных -lived.
Увеличьте значение тайм-аута по умолчанию, установив параметр базы данных таймаута.
blockquote>Возможно, у вас есть другое соединение в коде, который не закрыт или не зафиксирован, и это вызвать эту ошибку. В основном пытается сделать второй
execute
, когда он уже заблокирован другим. Если вы действительно хотите иметь свои параллельные транзакции, вам необходимо иметь RDBMS .
убедитесь, что вы передаете другие соединения, используя con.commit ()
У меня такая же ошибка, когда я выполнил unittests в моем приложении FLASK. Я решил проблему следующим образом:
Перейдите в папку проекта, затем найдите экземпляр / удалите файл filename.db