多线程和 Python SQL3



我使用 Python 2.7 和 SQLite3 数据库。我想对数据库运行更新查询,这可能需要一些时间。另一方面,我不希望用户必须等待。因此,我想启动一个新线程来执行数据库更新。

Python 抛出错误。有没有一种有效的方法可以告诉数据库在其自己的线程中进行更新,而不必等待线程完成?

第 39 行,执行中 编程错误:在线程中创建的 SQLite 对象只能在同一线程中使用。对象是在线程 ID 3648 中创建的,这是线程 ID 6444

就示例而言,我正在尝试编写一个 Anki 插件。产生该错误的插件代码是:

from anki.sched import Scheduler
import threading
def burying(self, card):
    buryingThread = threading.Thread(target = self._burySiblings, args = (card,))
    buryingThread.start()
def newGetCard(self):
    "Pop the next card from the queue. None if finished."
    self._checkDay()
    if not self._haveQueues:
        self.reset()
    card = self._getCard()
    if card:
        burying(self, card)
        self.reps += 1
        card.startTimer()
        return card
__oldFunc = Scheduler.getCard
Scheduler.getCard = newGetCard

看看芹菜项目,如果你使用的是 django,它会更直接 www.celeryproject.org

最新更新