2013-08-22 10 views
15

sto cercando di capire bulk_create in DjangoDjango funzione bulk_create esempio

Questa era la mia query originale che sto cercando di convertire:

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 
    ) 

Vuol dire che nel seguente modo (sotto) si ciclo e creare tutte le voci prima di colpire il database? È giusto?

+2

Sei quasi arrivato. Non creare gli oggetti nel ciclo. Basta fare 'Message (...)' invece di 'Message.objects.create (...)' - Non innescherebbe una chiamata al database. Metti questo in una lista e passa quell'elenco in 'bulk_create' – karthikr

risposta

29

Il secondo codice nella domanda crea un singolo oggetto, perché passa un set con un oggetto Messaggio.

Per creare più oggetti, passare più oggetti Messaggio a bulk_create. Ad esempio:

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

E se avessi un milione di oggetti? Questo importa? – GrantU

+0

Se si dispone delle capacità di elaborazione per gestire gli oggetti 1MM, quindi sicuro – karthikr

+0

Si tratta di CPU o memoria di interesse? – GrantU

Problemi correlati