【发布时间】:2017-04-24 09:06:03
【问题描述】:
我创建了一个自定义的manage.py 命令,如下所示:
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from photos.models import Person
class Command(BaseCommand):
help = 'Pre-populate database with initial data'
def _create_people(self, user):
for i in range(0, 100):
person = Person(first_name='FN', surname='SN', added_by=user)
person.save()
def handle(self, *args, **options):
user = User.objects.get(username="user1")
self._create_people(user)
我已经计时了 handle() 的执行时间,如果我不执行 person.save() 大约需要 0.02 秒,如果我保存的话,每个 Person 大约需要 0.1 秒。数据库是 sqlite,我相信它应该更快。什么可以解释如此糟糕的性能以及如何改进它?
【问题讨论】:
-
这不是问题。只运行一次的命令需要 0.02 的时间,你甚至不需要花费一秒钟的时间。
-
@e4c5,同意,但事实并非如此。每个条目需要 0.1 秒,因此 3000 个条目需要 5 分钟。这只是一个模型。
标签: python django performance sqlite django-queryset