자주 묻는 질문: 데이터베이스와 모델¶
어떻게 장고가 작동시키는 순수 SQL 쿼리를 볼 수 있나요?¶
Django : setting :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``는 :setting:`DEBUG`가 ``True``일 때만 사용할 수 있습니다. 이는 쿼리가 실행된 순서대로 정렬된 딕셔너리 리스트입니다. 각 딕셔너리에는 다음을 포함합니다.
sql- 원시 SQL 문time- 문 실행 시간(초)
connection.queries 는 모든 SQL 표현문을 포함합니다. INSERT, UPDATES, SELET 등. 당신의 앱이 데이터베이스에 쿼리할 때마다, 쿼리들이 기록됩니다.
multiple databases</topics/db/multi-db>`를 사용하고 있다면 ``connections` 딕셔너리의 각 항목에서 동일한 인터페이스를 사용할 수 있습니다.
>>> from django.db import connections
>>> connections["my_db_alias"].queries
만약 함수의 어느 지점에서 수동으로 쿼리 리스트들을 초기화할 필요가 있다면, 다음과 같이``reset_queries()` 를 호출하세요.
from django.db import reset_queries
reset_queries()
장고를 이미 존재하는 데이터베이스와 함께 사용할 수 있나요?¶
네, :doc:`기존 데이터베이스와 통합 </howto/legacy-databases>`를 보세요
만약 모델에 변화가 생기면, 어떻게 데이터베이스에 적용하나요?¶
:mod:`schema migrations <django.db.migrations>`라는 장고 지원문서를 참조하세요.
데이터가 지워지는 것을 개의치 않는다면, 프로젝트의 “manage.py” 유틸리티는 flush 옵션을 가지고있어서 :djadmin:`migrate`가 실행된 후의 데이터베이스 상태로 되돌려 줍니다.
장고 모델들은 다중 열 기본 키를 지원하나요?¶
아니요. 오직 하나의 기본 키만 지원합니다.
그러나 이것은 실제로 문제가 되지 않습니다. 왜냐하면 다른 제약 조건을 추가하거나(unique_together 모델 옵션을 사용하거나 데이터베이스에서 직접 제약 조건을 생성하는 것), 해당 수준에서 유일함을 강제하는 것을 막을 수 없기 때문입니다. 단일 열 기본 키는 관리자 인터페이스와 같은 작업에 필요합니다. 예를 들어 편집하거나 삭제할 개체를 지정하려면 단일 값이 필요합니다.
장고는 NoSQL 데이터베이스를 지원하나요?¶
장고 자체에서는 NoSQL 데이터베이스를 공식적으로 지원하지 않습니다. 그러나, 장고에는 NoSQL 기능을 따르는 많은 사이드 프로젝트가 있습니다.
`위키 페이지`_에서 여러 프로젝트들에 대해 논의해 볼 수 있습니다.
어떻게하면 MyISAM을 테이블 타입에 주는것과 같은 데이터베이스 전용 옵션을 CREATE TABLE 명령에 추가할 수 있을까요?¶
저희는 데이터베이스 마다 가지고있는 옵션들 예를들면 테이블 타입과 같은 것들을 호환하기 위해 특이 사항들을 추가하는 것을 꺼려합니다. 만약 당신이 이런 옵션들을 쓰고 싶다면, 당신이 하고자 하는 것을 가지고있는 :class:`~django.db.migrations.operations.RunSQL`의 ``ALTER TABLE``명령어를 활용하여 마이그레이션을 만드세요.
예를 들어 MySQL을 사용 중이고 테이블을 MyISAM 타입으로 설정하려면 다음 SQL을 사용하세요.
ALTER TABLE myapp_mytable ENGINE=MyISAM;