База данных Python sqlite3 заблокирована - PullRequest
2 голосов
/ 25 марта 2019

Я использую Python 3 и sqlite3 в Windows. Я разрабатываю небольшое приложение, которое использует базу данных для хранения контактов. Я замечаю, что если приложение закрывается принудительно (либо по ошибке, либо заканчивая через диспетчер задач), я получаю ошибку sqlite3 (sqlite3.OperationalError: база данных заблокирована).

Я предполагаю, что это потому, что я не закрываю соединение с базой данных должным образом до закрытия приложения. Я пробовал это:

    connection = sqlite3.connect(dbFile.db)
    connection.commit()
    connection.close()

, а затем пытается повторно открыть соединение, но заблокированная база данных остается. Есть ли способ закрыть базу данных перед сбоем? Или способ разблокировать базу данных в приложении? Прямо сейчас единственное решение, которое у меня есть, - это удалить базу данных и начать заново (что не будет работать долго).

Спасибо!

1 Ответ

0 голосов
/ 25 марта 2019

Если ваше приложение закрывается принудительно, то, скорее всего, вы не захотите фиксировать свою текущую транзакцию, вместо этого откат, чтобы ничего не сломалось?

После того, как сигнал о закрытии был получен, попробуйте следующее:

connection.rollback()
connection.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...