FAQ: 데이터베이스 및 모델

어떻게 Django가 실행중인 원시 SQL 쿼리를 볼 수 있습니까?

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는 다음과 같은 경우에만 사용할 수 있습니다 DEBUGTrue 입니다. 쿼리 실행 순서에 따라 사전 목록입니다. 각 사전에는 다음이 있습니다:

``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를 기존 데이터베이스와 함께 사용할 수 있습니까?

예. 참고 자료 레거시 데이터베이스와의 통합.

모델을 변경하면 데이터베이스를 어떻게 업데이트합니까?

Django가 schema migrations 에 대한 지원을 살펴보십시오.

데이타를 지우는 데 신경 쓰지 않는다면, 프로젝트의 manage.py 유틸리티는 flush 옵션을 가지고 있습니다 migrate가 실행 된 직후의 상태로 데이터베이스를 재설정하십시오.

Django 모델은 다중 컬럼 기본 키를 지원합니까?

단일 열 기본 키만 지원됩니다.

그러나 이것은 실제적으로는 문제가되지 않습니다. 왜냐하면 다른 제약 조건 (unique_together 모델 옵션을 사용하거나 데이터베이스에서 직접 제약 조건을 생성하는 것)을 추가하는 것을 멈추게 할 것이고 그 수준에서 고유성을 강요하는 것이 없기 때문입니다. 단일 열 기본 키는 관리 인터페이스와 같은 작업에 필요합니다. 예를 들어 편집하거나 삭제할 객체를 지정할 수있는 간단한 방법이 필요합니다.

Django는 NoSQL 데이터베이스를 지원합니까?

NoSQL 데이터베이스는 Django 자체에서 공식적으로 지원하지 않습니다. 그러나 Django에서 NoSQL을 사용할 수있게 해주는 여러 프로젝트와 포크가 있습니다. 예를 들어 Django non-rel 입니다.

또한`wiki page`_에서 몇 가지 대안을 논의 할 수 있습니다.

MyISAM을 테이블 형식으로 지정하는 것과 같은 CREATE TABLE 문에 데이터베이스 관련 옵션을 어떻게 추가합니까?

Django 코드에 특별한 경우를 추가하여 테이블 유형과 같은 모든 데이터베이스 별 옵션을 수용하는 것을 피하려고합니다. 이러한 옵션을 사용하려면 RunSQL 연산을 수행합니다.이 연산은 당신이하고 싶은 일을하는 ALTER TABLE 문을 포함합니다.

예를 들어, MySQL을 사용하고 테이블에 MyISAM 테이블 유형을 사용하려면 다음 SQL:

ALTER TABLE myapp_mytable ENGINE=MyISAM;