2016-07-07 3 views
0

Если я построю базу данных с использованием sqlite3 изнутри python, каким будет процесс, который редактирует файл базы данных?python/sqlite3 - Какой процесс записывает файл?

Могу ли я заметить из оболочки, что база данных не закрыта - даже если в настоящее время нет вставок?

+0

Итак, если я проверю 'lsof -c python - $ database', это скажет мне, что процесс python завершил работу над базой данных? –

ответ

1

SQLite - это база данных, поэтому нет отдельного процесса.

Вы можете проверить с помощью lsof или аналогичные инструменты, имеет ли процесс Python открытый ключ к файлу базы данных. Однако такая рукоятка соответствует открытому соединению; он не говорит вам, есть ли активная транзакция.

Сделка блокирует файл БД; вы можете попытаться проверить это с помощью lslk или lslocks. Но если вы действительно хотите что-то сделать с БД, лучше было бы использовать механизмы синхронизации самого SQLite и попытаться выполнить BEGIN EXCLUSIVE.

+0

Отлично, я просто хотел задать свой вопрос относительно того, будет ли lsof показывать файл открытым между строками python 'conn = sqlite3.connect ('database.db')' и 'conn.close()'. –