2012-03-26 5 views
5

관리되지 않는 Django 모델에서 사용하는보기에 맞춤 SQL을 배포하는 가장 좋은 방법은 무엇입니까?Django로 맞춤 SQL을 설치하는 방법

모델 "db_table"메타 속성에 지정된 뷰 myview.sql을 사용하여 myapp.models.MyModel 모델을 보유하고 있습니다. 따라서 the docs 다음에 myapp/sql/myview.sql에 사용자 지정 SQL 파일을 저장했습니다.

그러나 python manage.py syncdb을 실행 한 후에는보기가 설치되지 않습니다. 마찬가지로 sqlcustom을 실행해도보기가 표시되지 않습니다.

Django가 내 사용자 지정 SQL을 자동으로 검색하고 배포하기 위해 수행해야하는 작업은 무엇입니까?

답변

1

the doc에 따르면, 파일의 MyApp/SQL/mymodel.sql 대신 myapp와의/SQL/myview.sql

+0

sqlcustom을 실행할 때 SQL을 표시하지만 syncdb가 여전히 설치되지 않습니다. – Cerin

+1

@Cerin syncdb를 다시 실행하기 전에 DB 테이블을 삭제 했습니까? sqlcustom의 출력에서 ​​볼 수 있듯이 사용자 정의 된 sqls는 단일 BEGIN ... COMMIT 블록에서 테이블 sqls를 생성하는 번들입니다. 당신은 -v 3을 사용하여 syncdb를 실행할 수 있습니다. – okm

+2

문제의 앱이 사우스에 의해 관리되므로 장고는 사우스 앱에서 사용자 정의 SQL을 무시합니다 ... 그리고 불행히도 사우스는 맞춤 SQL 마이그레이션을 지원하지 않습니다 ... – Cerin

8

python manage.py sqlcustom 만 출력이 정의했지만, 당신이 필요로하는 사용자 지정 SQL 문이 실행됩니다 이름 데이터베이스에 저장합니다. 물론 복사하여 붙여 넣을 수 있지만 프로세스를 자동화하고 지루하고 오류가 발생하지 않도록하려면 (* nix 환경에서) 적어도 하나의 쉬운 방법은 파이프를 사용하는 것입니다.

python manage.py sqlcustom myapp | python manage.py dbshell

+0

뒤늦은 견해로는 이것이 안정적으로 작동하지 않는 것 같습니다. 'sqlcustom'은 특정 DB 백엔드에 대한 SQL 뷰를 사용하여 관리되지 않는 모델에 대해서는 아무 것도 출력하지 않습니다. 예 : myapp/sql/mymodel.sql이 표시되지만 myapp/sql/mymodel.postgresql.sql은 표시되지 않습니다. – Cerin

+0

sqlcustom은 Django 1.9에서 사라져 가고 있으며 대신 RunSQL을 사용할 것을 권장합니다. – mlissner