下面以创建10000个对象为例进行测试:
# 用for循环挨个创建,共花费37秒
for i in range(10000):
name="String number %s"%i
Record.objects.create(name=name)
# 用django事务只提交一次,共花费2.65秒
@transaction.commit_manually
def manual_transaction():
for i in range(10000):
name="String number %s"%i
Record.objects.create(name=name)
transaction.commit()
# 用bulk_create创建,共花费0.47秒
def builtin():
insert_list =[]
for i in range(10000):
name="String number %s"%i
insert_list.append(Record(name=name))
Record.objects.bulk_create(insert_list)
# 用for循环挨个更新,共花费72秒:
def auto_transaction():
for record inRecord.objects.all():
record.name ="String without number"
record.save()
# 用django事务只提交一次,共花费17秒<