【发布时间】:2022-08-21 14:09:52
【问题描述】:
这是一个普遍的问题: 我正在使用一个 sqlite3 数据库并运行一个 python 程序来更改、读取和写入该数据库。
我正在运行以下命令:
SELECT COUNT(*) FROM table WHERE prm1=\'a\' AND prm2=\'b\' prm3=12345;
当我定期运行它时,它会产生正确的答案。
但是当我以多线程方式运行它时,它会产生不同的答案(有时它是正确的,但有时是错误的)。 只是为了澄清:在此期间没有进行任何写入。
同时运行 SQL 命令是否存在我不知道的问题?
-
假设您在每个线程上使用独立连接并且您没有从默认值重新配置 SQLite 线程模式,则查询未写入的表每次都应该产生正确的结果。你能提供一个可重复的问题示例吗?
-
@AlexK。 - 实际上我在每个线程中使用相同的连接。那是问题吗?那应该改变什么吗?
-
您需要每个线程都有一个连接,它们不能共享。
-
@AlexK。随意添加它作为答案,我会在答案上签名(我会确保它有效):)
标签: python multithreading sqlite