【Python】解决Sqlite多线程检测

Python连接Sqlite问题

现象

ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id *** and this is thread id ***.

原因

1
connection = sqlite3.connect('data.db')

在导入连接数据库的module时,自动连接了数据库,但是为了GUI界面不卡死,在执行对应语句的时候使用的是新建的线程。
而sqlite在进行执行增删改操作的时候,操作所在线程必须和connection所在线程一致,但是对于查找操作允许多线程。

解决办法

1
connection = sqlite3.connect('data.db', check_same_thread=False)

将检测同线程关闭,为了不产生其他麻烦,要确保在进行数据库操作的时候只有一个线程在增删改数据库。