[743]python sqlite3.ProgrammingError: SQLite objects created in a thread can only be used
错误 sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 12096 and this is thread id 19564 引言: SQLite是基于文件系统的mini数据库,我们用以存放简便的数据,本文将描述在代码中碰到的并发问题。 代码为多个线程进行数据库的读写操作。这里简要列出关键的数据库操作,主要集中在insert/update操作。 问题分析 从错误信息来分析,问题是sqlite本身应对多个线程并发访问过程中的冲突问题,由一个线程创建并访问的sqlite的数据库,无法允许另外一个线程进行访问。这里的解决办法可能有2个: 通过队列规避多线程的访问 通过设置或者多个访问管道,规避线程之间的冲突问题 从技术上评估,2个方法都可以解决问题,哪种更具优势? 问题解决 通过网上搜索发现,其实可以通过设置sqlite文件的读取方式,可以简单规避掉线程之间的冲突问题: def initDB(self, file_path): self.file_path = file_path self.cx = sqlite3.connect(file_path, check_same