2013-06-09 4 views
5

현재 순간에 syncdb가 생성하는 SQL을 확인하려고합니다.Django는 코드 변경 후 syncdb sqlall 문을 업데이트합니다.

여러 검색 한 후 대답은 명백하지 않았다 - 나는 당신이 사용할 수있는 알고

python manage.py syncdb --sqlall 

반환 :

Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created. 

을 어떻게 I 출력 전체 일어난 변경 사항 코드가 전혀 변경된 경우 데이터베이스?

이 시점에서 syncdb'ing이 필요한 모든 앱에 대해 모든 SQL을 생성 할 수있는 방법이 있습니까? 또는 각 앱을 명시 적으로 명시해야합니까? 전체 사이트에 대해 모든 SQL을 찾고있는 것은 아니며 syncdb에 의해 구현 될 변경 사항을 찾고 있습니다.

변경 사항을 설명하기 위해 SQL을 생성해야하는 몇 가지 응용 프로그램이 있습니다. 내가 명시 적으로 그들을 나열 할 수 있지만 거기에 대한 syncdb 나를 위해 알아낼 수있는 방법이 무엇입니까? 그냥 sql statements하려면

답변

6

당신은 여기

./manage.py sql <app_name> 

은 모든 설치된 앱에 대한 sqlall을 인쇄하는 mangement command되면, sql statements and initial data for the app.

를 얻을 수

./manage.py sqlall <app_name> 

을 할 수 있습니다. 또는 설치된 모든 앱을 가져 오는 자체 관리 명령을 작성할 수 있으며 각각에 대해 ./manage.py sql <app_name>을 호출합니다. 먼저

https://github.com/django-extensions/django-extensions/blob/master/docs/sqldiff.rst

,

sudo pip install django-extensions 

다음에 장고-확장을 추가

+0

감사합니다 kathikr -하지만 지금 사용할 수있는 모든 응용 프로그램에 대한 모든 문장을 생성하는 방법이 있습니까?(귀하의 링크를 클릭하면) –

+1

명령 줄에서 여러 개의 앱 (공백으로 구분)을 지정할 수 있습니다. 하지만 나는 당신이 "모든"앱을 설치할 수있는 곳이 있다고 생각하지 않는다. – karthikr

+0

ther가 모든 앱에 대한 모든 설명을 작성하는 방법인지는 매우 흥미로울 것입니다. 이것이 바로 질문의 진정한 의미입니다. 윌 개정. 당신의 도움을 주셔서 감사합니다. –

1

장고 확장 패키지는 사용자 지정 관리의 수는 장고 명령을 가지고, 다음 명령 중 하나는 sqldiff입니다 설치된 앱

INSTALLED_APPS = (
    ... 
    'django_extensions', 
    ... 
) 

그런 다음, 할 수 있습니다

python manage.py sqldiff -a 
당신은 차이의 전체 목록과 모든 필드 (길이, 널 (null), 부호 등)

제대로 설정되어 있는지 확인합니다 ALTER 표 문의 긴 목록이 표시됩니다

생성되지 않습니다

모든 테이블이 나열됩니다, 당신은 다음 사용하여 작성하는 SQL을 덤프 할 수

python manage.py sqlall {app_label} 

그것은 열 이름 변경, sqldiff이 시도 할 것이라는 점을 주목할 필요가 단순히 드롭 이름 열과 cr - 새로운 sqldiff를 복사하고 검사하지 않고 프로덕션에 대해 실행하지 마십시오.