У меня есть 2 процесса, которые имеют доступ к базе данных sqlite3. Хотя чтение не является проблемой в sqlite, только один процесс может записывать в базу данных. По данным faq: http://www.sqlite.org/faq.html#q5 sqlite использует блоки чтения/записи.sqlite: проверка блокировки чтения/записи
Как проверить, заблокирована ли база данных для записи другим процессом, как из python, так и из C++?
Я имею в виду, что выполнение запроса является опцией, но оно требует производительности в зависимости от запроса. Поэтому вопрос заключается в том, какой тип запроса я использую для минимизации этого эффекта. Я также хотел бы заблокировать/разблокировать базу данных самостоятельно.
Я действительно связался с faq в моем вопросе. Дело в том, что мне хотелось бы знать, как проверить, заблокирована ли база данных. Я имею в виду, что выполнение запроса является опцией, но в зависимости от запроса требуется производительность. Поэтому вопрос заключается в том, какой тип запроса я использую для минимизации этого эффекта. Я также хотел бы заблокировать/разблокировать базу данных самостоятельно. Вероятно, я должен был быть более ясным в вопросе. –
В http://www.sqlite.org/c3ref/io_methods.html упоминается структура указателей функций, одна из которых - xCheckReservedLock(), которая возвращает true, если файл заблокирован. В этой структуре все остальные функции, связанные с блокировкой. Я не уверен в доступе к ним из-за пределов библиотеки sqlite, но это может стоить исследовать. Я думаю, что вы делаете это через этот интерфейс: http://www.sqlite.org/c3ref/file_control.html – badgerr
Я исправил проблему другим способом, поэтому я не уверен, действительно ли ваше предложение действительно работает, но вы прилагаете усилия для ответа на этот вопрос поэтому я буду отмечать его как правильное –