Python sqlite3 和并发性
- 论坛
- Python sqlite3 和并发性
9 浏览
Python sqlite3 和并发性
我有一个使用"threading"模块的Python程序。每秒钟,我的程序会启动一个新的线程,从网上获取一些数据,并将这些数据存储到我的硬盘上。我想使用sqlite3来存储这些结果,但我无法使其工作。问题似乎出在以下这行代码上:
conn = sqlite3.connect("mydatabase.db")
- 如果我将这行代码放在每个线程内部,我会收到一个OperationalError,告诉我数据库文件被锁定。我猜这意味着另一个线程通过sqlite3连接打开了mydatabase.db并锁定了它。
- 如果我将这行代码放在主程序中,并将连接对象(conn)传递给每个线程,我会收到一个ProgrammingError,说在一个线程中创建的SQLite对象只能在同一个线程中使用。
以前我将所有的结果存储在CSV文件中,并没有遇到这些文件锁定的问题。希望这在sqlite中也是可能的。有什么想法吗?