Sqlite数据库多线程SELECT和UPDATE操作混淆

0 投票
1 回答
512 浏览
提问于 2025-04-17 18:17

我正在创建一个多线程的应用程序,使用Sqlite数据库来存储信息。

其中一个线程执行一个选择操作,选择某一列为空的行,具体代码如下:

for i in cursor.execute('SELECT Beeid from SongLink WHERE Dlink=\'\''):

另一个线程也在访问数据库,并尝试更改这些列的Dlink值

那么,上面的代码是否总是能正确找到Dlink='' 的列,同时考虑到另一个线程所做的更新,还是说这可能导致选择错误的行呢?

1 个回答

1

使用每个线程单独连接,这样SQLite就能保持数据的完整性。

在一个连接中对数据库的修改,其他线程是看不到的,直到你a) 提交这些修改,并且b) 在想要查看新数据的连接中开始一个新的事务。

你还需要把连接的check_same_thread参数设置为True

撰写回答