【问题标题】:SQLite3 wrong values when multithreading多线程时 SQLite3 错误值
【发布时间】: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


【解决方案1】:

正如 AlexK 所提到的,解决方案是在使用多线程和查询 SQL 表时,您不能使用相同的连接,并且需要为每个线程打开一个新连接。

希望这对某人有所帮助,我已经坚持了太久了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 2020-08-08
    • 2012-07-03
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多