2013-08-22 2 views
15

Я пытаюсь понять bulk_create в DjangoДжанго функция bulk_create пример

Это был мой первоначальный запрос я пытаюсь преобразовать:

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 
    ) 

Означает ли это, выполнив следующие действия (ниже) будет цикл и сначала создать все записи, а затем попасть в базу данных? Это правильно?

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

Вы почти у цели. Не создавайте объекты в цикле. Просто сделайте 'Message (...)' вместо 'Message.objects.create (...)' - Это не вызовет вызов базы данных. Поместите это в список и передайте этот список в 'bulk_create' – karthikr

ответ

29

Второй код вопроса создает один объект, поскольку он передает набор с объектом Message.

Чтобы создать несколько объектов, передайте несколько объектов Message в bulk_create. Например:

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

Что делать, если у меня есть миллион объектов? Будет ли это? – GrantU

+0

Если у вас есть возможности обработки для обработки объектов 1MM, то обязательно – karthikr

+0

Это он CPU или Memory из интереса? – GrantU

Смежные вопросы