Есть ли способ явно получить блокировку базы данных sqlite3 в Python?Как заблокировать базу данных sqlite3 в Python?
ответ
Способ явно заблокировать базу данных, это начать транзакцию, как описано в documentation:
Когда база данных получает доступ нескольких соединений и один из процессов, модифицирует базу данных, то SQLite база данных заблокирована пока эта транзакция не будет совершена.
Один из способов инициировать транзакцию является использовать connection as a context manager:
import sqlite3
con = sqlite3.connect(...)
...
with con:
# Database is locked here
отметить также, что некоторые сделки случаются implictly по умолчанию:
По умолчанию модуль sqlite3 открывает сделки неявным образом перед оператор языка изменения данных (DML) (т.е. INSERT/UPDATE/DELETE/REPLACE) и неявно совершает транзакции перед операцией без запроса DML, без запроса (т.е. ничего, кроме SELECT или вышеупомянутое).
С SQLITE FAQ, "Can multiple applications or multiple instances of the same application access a single database file at the same time?":
Множественные процессы могут иметь ту же базу данных открытых в то же время. Несколько процессов могут выполнять SELECT одновременно. Но только один процесс может вносить изменения в базу данных в любой момент в раз, однако.
Независимо от того, используете ли вы конструкцию with connection
, многие процессы могут считывать только один, который можно записать в базу данных в любой момент времени.
Мы можем использовать несколько команд процесса для блокировки процесса записи и чтения БД. Я использую следующие команды и свой рабочий режим. от многопроцессорной Импорт Заблокируйте l.Lock() l.acquire() Read/Write DB l.release()
- 1. Как удалить базу данных sqlite3 в python?
- 2. Приложить базу данных в sqlite3 с python
- 3. Как очистить базу данных sqlite3 в Джанго
- 4. Заблокировать доступ к базе данных и заблокировать базу данных заблокирован
- 5. Как создать базу данных sqlite3
- 6. Заблокировать всю базу данных?
- 7. Как безопасно перемещать базу данных SQLite3?
- 8. Как заблокировать всю базу данных в yii?
- 9. Как временно заблокировать базу данных в mysql
- 10. Как создать базу данных sqlite3 в памяти?
- 11. Как вставить список в базу данных sqlite3
- 12. Невозможно создать базу данных sqlite3 в фляже?
- 13. Python вставляет массив numpy в базу sqlite3
- 14. Python sqlite3 сохранение данных
- 15. Заблокировать базу данных SQLite Java
- 16. Невозможно выбрать базу данных sqlite3
- 17. Как заблокировать базу данных Access от записи
- 18. Neo4j: Как заблокировать всю базу данных
- 19. Python и sqlite3 - импортировать текстовый файл в базу данных
- 20. Невозможно вставить данные в базу данных sqlite3 с помощью Python
- 21. sqlcipher как импортировать базу данных sqlite3
- 22. Как создать базу данных Sqlite3 - IOS
- 23. Как восстановить поврежденную базу данных SQLite3?
- 24. Ошибка базы данных Python Sqlite3
- 25. Вставить пользовательский объект в базу данных Sqlite3
- 26. Импортирование сбрасывания SQLite3 обратно в базу данных
- 27. Добавить существующую базу данных SQLite3 в Swift
- 28. Запись атрибутов объекта в базу данных sqlite3
- 29. Импорт блоков данных в txt-файл в базу данных sqlite3
- 30. Не могу ВСТАВИТЬСЯ в базу данных Sqlite3
Просто чтобы быть ясно: если я использую 'с кон симулировать, я гарантировал, что все операции чтения и записи с базой данных внутри этого блока происходят вместе? (То есть другой поток не может изменить что-то, что я читаю). –
Я разместил следующий вопрос по адресу http://stackoverflow.com/questions/9070369/locking-a-sqlite3-database-in-python-re-asking-for-clarification –