我正在创建一个mufti线程应用程序,它使用Sqlite数据库来存储信息。
其中一个线程执行SELECT操作,它选择特定列为空的行,如下所示:
for i in cursor.execute('SELECT Beeid from SongLink WHERE Dlink=\'\''):
其他线程也访问数据库并尝试更改列的 Dlink值。
上面的代码是否总是会给 Dlink = \'\''的列提供其他线程所做的更新,否则会导致行选择错误
答案 0 :(得分:1)
使用separate connections per thread,SQLite将保持数据完整性。
在一个连接中对数据库的更改在其他线程中不可见,直到您a)提交更改并且b)在想要查看新数据的连接中启动新事务。
您确实要将连接的check_same_thread
参数设置为True
。