반응형
종종 Django의 쿼리 셋에서 첫 번째 객체를 가져 오거나, 없으면 None
을 반환하고 싶습니다. 모든 작업을 수행하는 많은 방법이 있습니다. 하지만 어느 것이 가장 성능이 좋은지 궁금합니다.
qs = MyModel.objects.filter(blah = blah)
if qs.count() > 0:
return qs[0]
else:
return None
이로 인해 두 개의 데이터베이스 호출이 발생합니까? 그것은 낭비적인 것 같습니다. 이게 더 빠릅니까?
qs = MyModel.objects.filter(blah = blah)
if len(qs) > 0:
return qs[0]
else:
return None
또 다른 옵션은 다음과 같습니다.
qs = MyModel.objects.filter(blah = blah)
try:
return qs[0]
except IndexError:
return None
이것은 좋은 단일 데이터베이스 호출을 생성합니다. 그러나 많은 시간 동안 예외 객체를 생성해야하는데, 이는 정말로 필요한 모든 것이 사소한 if-test 일 때 매우 메모리 집약적 인 일입니다.
단일 데이터베이스 호출로 예외 객체로 메모리를 뒤흔들 지 않고 어떻게이 작업을 수행 할 수 있습니까?
해결 방법
MyModel.objects.filter(blah=blah).first()
둘 다 결과 예외를 삼키고 쿼리 세트가 객체를 반환하지 않으면 None
을 반환합니다.
참조 페이지 https://stackoverflow.com/questions/5123839
반응형
'파이썬' 카테고리의 다른 글
파이썬 다른 값이 사용되지 않을 때 튜플에서 a 값 추출 (0) | 2020.10.09 |
---|---|
파이썬 Python을 사용하여 웹 페이지의 페이지 제목을 검색하려면 어떻게해야합니까? (0) | 2020.10.09 |
파이썬 nan 값을 0으로 변환 (0) | 2020.10.09 |
파이썬 VSCode : 인수를 사용하여 Python 스크립트를 디버그하는 방법 (0) | 2020.10.09 |
파이썬 왜 목록에는 사전과 같은 안전한 "get"메소드가 없습니까? (0) | 2020.10.09 |
댓글