Django DEBUG
설정이 True
로 설정되어 있는지 확인하십시오. 그런 다음이 작업을 수행하십시오:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id, polls_polls.question, polls_polls.pub_date FROM polls_polls',
'time': '0.002'}]
connection.queries
는 다음과 같은 경우에만 사용할 수 있습니다 DEBUG
는 True
입니다. 쿼리 실행 순서에 따라 사전 목록입니다. 각 사전에는 다음이 있습니다:
``sql`` -- The raw SQL statement
``time`` -- How long the statement took to execute, in seconds.
connection.queries
는 모든 SQL 문 (INSERT, UPDATES, SELECT 등)을 포함합니다. 앱이 데이터베이스에 접근 할 때마다 쿼리가 기록됩니다.
다중 데이터베이스를 사용하고 있다면 connections
사전의 각 멤버에서 같은 인터페이스를 사용할 수 있습니다:
>>> from django.db import connections
>>> connections['my_db_alias'].queries
함수의 어느 지점에서든 수동으로 쿼리 목록을 지우려면, 다음과 같이 reset_queries ()
를 호출하십시오:
from django.db import reset_queries
reset_queries()
예. 참고 자료 레거시 데이터베이스와의 통합.
Django가 schema migrations
에 대한 지원을 살펴보십시오.
데이타를 지우는 데 신경 쓰지 않는다면, 프로젝트의 manage.py
유틸리티는 flush
옵션을 가지고 있습니다 migrate
가 실행 된 직후의 상태로 데이터베이스를 재설정하십시오.
단일 열 기본 키만 지원됩니다.
그러나 이것은 실제적으로는 문제가되지 않습니다. 왜냐하면 다른 제약 조건 (unique_together
모델 옵션을 사용하거나 데이터베이스에서 직접 제약 조건을 생성하는 것)을 추가하는 것을 멈추게 할 것이고 그 수준에서 고유성을 강요하는 것이 없기 때문입니다. 단일 열 기본 키는 관리 인터페이스와 같은 작업에 필요합니다. 예를 들어 편집하거나 삭제할 객체를 지정할 수있는 간단한 방법이 필요합니다.
NoSQL 데이터베이스는 Django 자체에서 공식적으로 지원하지 않습니다. 그러나 Django에서 NoSQL을 사용할 수있게 해주는 여러 프로젝트와 포크가 있습니다. 예를 들어 Django non-rel 입니다.
또한`wiki page`_에서 몇 가지 대안을 논의 할 수 있습니다.
Django 코드에 특별한 경우를 추가하여 테이블 유형과 같은 모든 데이터베이스 별 옵션을 수용하는 것을 피하려고합니다. 이러한 옵션을 사용하려면 RunSQL
연산을 수행합니다.이 연산은 당신이하고 싶은 일을하는 ALTER TABLE
문을 포함합니다.
예를 들어, MySQL을 사용하고 테이블에 MyISAM 테이블 유형을 사용하려면 다음 SQL:
ALTER TABLE myapp_mytable ENGINE=MyISAM;
Feb 14, 2017