将查询结果分组成批量的Python

时间:2013-08-27 11:48:36

标签: python django

我有一个查询。

messages = Message.objects.all()

我会将结果“消息”发送到被调用的函数bulk_send(),但这一次只能接受来自此查询的500条消息

所以我在想,有没有办法将结果分成批次,例如

 bulk_send(messages first 500)
 bulk_send(messages next 500)
 bulk_send(messages the remaining )

但是这不起作用,因为我永远不知道消息中有多少结果可能有200或100万,无论是bulk_send还是在任何给定时间都只接受500.

2 个答案:

答案 0 :(得分:1)

total = Message.objects.all().count()
for i in xrange(0,total,500):
   batch = Message.objects.all()[i:500]

答案 1 :(得分:1)

all_messages = Message.objects.all()

if all_messages.count() == 0:
    return

n = all_messages.count() / 500

for i in range (n if n else 1):
    messages = all_messages[i*500:(i+1)*500]
    bulk_send(messages)