2013-08-22 8 views
15

Próbuję zrozumieć bulk_create w DjangoDjango funkcja bulk_create przykład

To był mój oryginalny kwerenda Próbuję przekonwertować:

for e in q: 
    msg = Message.objects.create(
     recipient_number=e.mobile, 
     content=batch.content, 
     sender=e.contact_owner, 
     billee=batch.user, 
     sender_name=batch.sender_name 
    ) 

Czy to znaczy, wykonując następujące kroki (poniżej) będzie pętli i utworzyć najpierw wszystkie wpisy, a następnie trafić do bazy danych? Czy to jest poprawne?

msg = Message.objects.bulk_create({ 
    Message (
     recipient_number=e.mobile, 
     content=batch.content, 
     sender=e.contact_owner, 
     billee=batch.user, 
     sender_name=batch.sender_name 
    ), 
}) 
+2

Jesteś prawie na miejscu. Nie twórz obiektów w pętli. Po prostu wykonaj 'Message (...)' zamiast 'Message.objects.create (...)' - Nie wywołałoby wywołania bazy danych. Umieść to na liście i przenieś tę listę do 'bulk_create' – karthikr

Odpowiedz

29

Drugi kod w pytaniu tworzy pojedynczy obiekt, ponieważ przekazuje zestaw z obiektem wiadomości.

Aby utworzyć wiele obiektów, należy przekazać wiele obiektów Message do bulk_create. Na przykład:

objs = [ 
    Message(
     recipient_number=e.mobile, 
     content=batch.content, 
     sender=e.contact_owner, 
     billee=batch.user, 
     sender_name=batch.sender_name 
    ) 
    for e in q 
] 
msg = Message.objects.bulk_create(objs) 
+0

Co jeśli mam milion obiektów? Czy to ma znaczenie? – GrantU

+0

Jeśli masz możliwości przetwarzania do obsługi obiektów 1MM, to na pewno – karthikr

+0

Czy to procesor czy pamięć nie są interesujące? – GrantU

Powiązane problemy