일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인공지능
- 파이썬
- 데이터과학
- 사이버보안
- 딥러닝
- 코딩
- 컴퓨터과학
- 네트워크보안
- 컴퓨터비전
- 자바스크립트
- 알고리즘
- 자료구조
- 데이터베이스
- 컴퓨터공학
- Yes
- 네트워크
- 버전관리
- 소프트웨어
- 데이터구조
- 머신러닝
- 웹개발
- 보안
- 데이터분석
- 2
- I'm Sorry
- 소프트웨어공학
- 프로그래밍
- 클라우드컴퓨팅
- 프로그래밍언어
- 빅데이터
- Today
- Total
스택큐힙리스트
Django가 실행하는 원시 SQL 쿼리를 어떻게 볼 수 있나요? 본문
Django가 쿼리를 실행하는 동안 실행하는 SQL을 보여주는 방법이 있나요?
답변 1
문서 FAQ를 참조하세요: How can I see the raw SQL queries Django is running?
django.db.connection.queries는 SQL 쿼리 목록을 포함합니다:
from django.db import connection
print(connection.queries)
쿼리셋에는 실행할 쿼리가 포함된 query attribute도 있습니다:
print(MyModel.objects.filter(name=my name).query)
쿼리의 출력이 유효한 SQL이 아님을 주의하세요. 이는:
Django는 실제로 매개변수를 보간하지 않습니다. 대신 쿼리와 매개변수를 별도로 데이터베이스 어댑터에 보내어 적절한 작업을 수행합니다.
장고 버그 보고서 #17741에서.
그래서 쿼리 출력물은 직접 데이터베이스에 보내지 않아야 합니다.
쿼리를 재설정하여 특정 기간에 실행되고 있는 쿼리 수를 확인하려면 django.db에서 reset_queries를 사용할 수 있습니다.
from django.db import reset_queries
from django.db import connection
reset_queries()
# Run your query here
print(connection.queries)
>>> []
답변 2
Django는 강력한 웹 개발 프레임워크입니다. 그러나 때로는 실행 중인 SQL 쿼리에 대한 디버그 정보를 이해하는 것이 편리합니다. 행렬 ORM은 데이터베이스 클라이언트와 통신하기 때문에 단순히 SQL을 작성하는 대신, ORM은 데이터베이스와 추상적인 방식으로 상호 작용합니다. 이로 인해 SQL 쿼리를 직접 보는 것이 어렵게 됩니다.Django 프로젝트에서 SQL의 작동 방식을 추적하는 가장 쉬운 방법은 raw SQL 쿼리를 사용하는 것입니다. raw SQL은 데이터베이스에 직접 작성된 SQL 쿼리입니다. Django ORM 및 다른 기능을 사용하지 않고 데이터베이스와 직접 상호 작용하는 코드를 작성할 수 있습니다.
Raw SQL 쿼리를 실행하면 실행중인 모든 쿼리가 쉽게 볼 수 있습니다. 이 작업을 수행하려면 Django 설정 파일의 'DEBUG' 항목을 True로 설정해야합니다.
그러나 이 방법은 더 나은 방법이 있습니다. Python logging 모듈을 사용하여 raw SQL 쿼리를 볼 수 있습니다. 로깅 모듈에는 다양한 레벨로 메시지를 기록할 수 있습니다. raw SQL명령을 출력하기 위해 로깅 레벨을 DEBUG로 설정합니다.
인기있는 SQL 클라이언트를 알고있는 경우 SQL 디버깅을 위해 클라이언트를 사용할 수 있습니다. 감지 모듈을 사용하여 SQL 쿼리를 가능한 적게 실행하는 것이 더 좋습니다.
Django는 ORM을 통해 데이터베이스 작업을 수행하는 데 최적화되어 있지만, 데이터베이스에서 직접 작동하도록 선택할 수있는 raw SQL 쿼리를 사용할 수 있습니다. 이를 위해 Django 설정 파일을 설정하거나 Python 로깅 모듈을 사용할 수 있습니다.
서버 관리자와 개발자 모두에게 유용한이 작업은 오류를 디버깅하는 데 있어서 매우 중요합니다. raw SQL 쿼리를 사용하면 Django에서 실행중인 모든 SQL 쿼리를 보다 쉽게 볼 수 있으며, SQL 쿼리를 효율적으로 디버깅할 수 있습니다.