>  기사  >  백엔드 개발  >  Django 모델의 효율성을 향상시키는 몇 가지 작은 방법

Django 모델의 효율성을 향상시키는 몇 가지 작은 방법

高洛峰
高洛峰원래의
2016-10-17 14:03:401050검색

Django의 모델은 그다지 효율적이지 않습니다. 특히 많은 데이터베이스 작업을 수행할 때 Django를 사용하여 기업 웹사이트를 열거나 프로젝트를 아웃소싱하는 경우에는 이를 조금 건너뛸 수 있으며, 효율성에 미친 사람이 됩니다. 프로그램의 효율성 요구 사항이 상대적으로 높으면 다음 방법에 주의해야 합니다.
1.count() 메서드:
count 메서드를 사용하여 레코드 수를 가져오려면 다음 메서드를 사용할 수 있습니다.
num = info.objects.filter('... ').count( )
django 모델 모듈에서 count 메소드가 어떻게 작성되는지 살펴볼까요?
def count(self):
"""
SELECT COUNT()를 수행하고 레코드 수를
정수로 반환합니다.
QuerySet이 이미 완전히 캐시된 경우 이는 단순히 반환됩니다. 캐시된 결과의 길이
여러 SELECT COUNT(*) 호출을 피하기 위해 설정됩니다.
"""
self._result_cache가 None도 아니고 self._iter도 아닌 경우:
return len(self. _result_cache)
return self.query.get_count(using=self.db)

위에서 djang 모델의 count()는 실제로 데이터베이스를 쿼리하는 SELECT COUNT() 문을 실행해야 합니다. , 따라서 레코드가 많으면
데이터베이스 쿼리 효율성이 여전히 상대적으로 높습니다
예를 들어 len() 메서드를 사용하여 길이를 찾을 수 있으면 사용되는 반복 횟수는 더 낮아집니다. .
info = info.objects.filter('...')
num = len(info)
2개의 다목적 슬라이스
예를 들어, 데이터를 쿼리하려는 경우, 볼륨이 상대적으로 큽니다. 이 경우 쿼리 범위를 제한하지 않으면 시스템 오버헤드가 매우 커집니다. 예를 들어
뉴스 데이터를 페이지 단위로 표시하려면 그만큼 읽어야 합니다. 모든 데이터를 한 번에 읽어서 제한된 조건에 따라 표시하는 대신 원하는 대로 데이터를 한 페이지에 표시합니다.
예를 들어 처음 10개의 뉴스 항목을 표시하려면
news = News.objects.all()[1:10]
대신
news = News.objects.all()
news = news[1:10]
왜냐면
news = News.objects.all()
news = news[1:10]
당신은 데이터베이스 넣기 그 안의 모든 데이터를 읽어내는데, 이는 그리 효율적이지 않습니다.
위에서 언급한 사항은 Django 모델의 효율성을 향상시키기 위한 몇 가지 작은 방법입니다. Django를 사용하여 프로젝트를 개발할 때 효율성 측면에 주의하시기 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.