gpt4 book ai didi

Python sqlite3 和并发

转载 作者:IT老高 更新时间:2023-10-28 21:32:10 29 4
gpt4 key购买 nike

我有一个使用“线程”模块的 Python 程序。每秒一次,我的程序启动一个新线程,从网络上获取一些数据,并将这些数据存储到我的硬盘驱动器中。我想使用 sqlite3 来存储这些结果,但我无法让它工作。问题似乎与以下行有关:

conn = sqlite3.connect("mydatabase.db")
  • 如果我将这行代码放在每个线程中,我会收到一个 OperationalError,告诉我数据库文件已锁定。我想这意味着另一个线程通过 sqlite3 连接打开了 mydatabase.db 并锁定了它。
  • 如果我将这行代码放在主程序中,并将连接对象(conn)传递给每个线程,我会得到一个 ProgrammingError,说在一个线程中创建的 SQLite 对象只能在同一个线程中使用。<

以前我将所有结果存储在 CSV 文件中,并且没有任何这些文件锁定问题。希望这可以通过 sqlite 实现。有什么想法吗?

最佳答案

与流行的看法相反,新版本的 sqlite3 确实支持多线程访问。

这可以通过可选的关键字参数check_same_thread来启用:

sqlite.connect(":memory:", check_same_thread=False)

关于Python sqlite3 和并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393554/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com