有没有一种方法可以在Python中显式获取sqlite3数据库的锁?如何在Python中锁定sqlite3数据库?
3
A
回答
4
明确地锁定数据库的方法是启动一个事务如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非查询语句之前隐式地提交事务 之前所提)。
3
从sqlite的常见问题,"Can multiple applications or multiple instances of the same application access a single database file at the same time?":
多个进程可以同时打开同一个数据库。 多个进程可以同时做一个SELECT。但是,只有 一个进程可以在 的任何时刻对数据库进行更改。
无论是否使用with connection
结构,许多进程可以只有一个可以在任何给定时间写入到数据库中读取。
0
我们可以使用多进程命令来锁定数据库的写入和读取过程。我正在使用以下命令并且它的工作正常。 从多处理进口锁 l.Lock() l.acquire() 读/写DB l.release()
相关问题
- 1. Python的SQLITE3数据库锁定,QWidget的
- 2. 数据库被锁定-sqlite3
- 3. 错误:数据库被锁定在sqlite3
- 4. 如何等待sqlite3解锁数据库?
- 5. sqlite3异常数据库被锁定
- 6. 新的sqlite3数据库被锁定
- 7. iphone-sqlite3数据库锁定异常
- 8. 避免sqlite3的数据库锁定
- 9. 锁定sqlite3数据库文件下载
- 10. sqlite3.OperationalError:数据库被锁定
- 11. iPhone中的sqlite3数据库被锁定 - 如何避免?
- 12. 如何调试锁定的sqlite3数据库
- 13. 在Python中从sqlite3数据库拉值
- 14. 在Python 2.5中备份sqlite3数据库
- 15. Python中的SQLite:数据库被锁定
- 16. sqlite3数据库锁定在多个插入
- 17. SQLITE3在iPhone给数据库锁定异常
- 18. 从锁定的SQLite3数据库中读取
- 19. 如何在python中删除sqlite3数据库?
- 20. 填充sqlite3的Python中环数据库
- 21. 数据库锁定
- 22. 锁定数据库
- 23. 锁定数据库
- 24. 控制超时锁定独占SQLite3数据库
- 25. sqlite3.OperationalError:数据库被锁定 - 非线程应用程序
- 26. 的SQLite3 :: BusyException:数据库被锁定:INSERT INTO
- 27. sqlite3'数据库被锁定'不会因重试而消失
- 28. 水豚和铬驱动程序:SQLite3 :: BusyException:数据库被锁定
- 29. 在sqlite3数据库中插入数据
- 30. Odoo如何处理数据库锁定?
只是要清楚:如果我使用 '与CON' 把戏,难道我保证所有对该块中的数据库的读写操作都会一起发生? (也就是说,另一个线程不能改变我正在阅读的内容)。 – 2012-01-12 01:01:11
我发布了一个后续问题http://stackoverflow.com/questions/9070369/locking-a-sqlite3-database-in-python-re-asking-for-澄清 – 2012-01-30 20:52:59