多线程和Python SQL3

时间:2013-11-09 20:49:39

标签: python multithreading sqlite python-2.7

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

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

  

第39行,执行中   ProgrammingError:在一个线程中创建的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

1 个答案:

答案 0 :(得分:0)

查看芹菜项目,如果你正在使用django,那将更加直接www.celeryproject.org