我有多个django表,并希望并行查询表

时间:2012-09-22 06:58:38

标签: django multithreading django-models

我有多个映射到不同django模型的db表。现在我希望可以使用线程并行查询它们。例如:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True);

    isATutor = models.BooleanField();
    timeAvailable = models.CharField(max_length=3);

class TutorProfile(models.Model):
    user = models.ForeignKey(User);

    language = models.CharField(max_length=30);
    unique_together = (("user", "language"), );

class Tutor(models.Model):
    user = models.ForeignKey(User);

    subject = models.CharField(max_length=30);
    unique_together = (("user", "subject"), );

现在,我想查询UserProfile字段的timeAvailable表和TutorProfile字段的language表以及Tutor subject表的{{1}}表使用线程的字段。那我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

这只是一个划痕,但也许会有所帮助:

import threading
class PararellThread(threading.Thread):
     def __init__(self,model):
         threading.Thread.__init__(self)
         self.model = model
         self.result = []

     def run(self):
         self.result = self.model.objects.all()

def get_objects_in_pararell( models ):
    threads = []
    result = []
    for model in models:
        t = PararellThread(model)
        t.start()
        threads.append(t)

    for thread in threads:
        thread.join()
        for obj in thread.result:
             result.append(obj)

    return result