2011-05-01 4 views
2

장고에서 model.py를 변경했으며 이제 이러한 변경 사항을 동기화하려고합니다. 테이블을 삭제하고 다시 작성하는 것이 좋습니다. 그러나 아무것도 작동하지 않는 것 같습니다. 내가 sqlite3를 사용하고 있습니다 :Django sqlite - 스키마를 변경하는 방법

syncdb :뿐만 아니라 syncdb 다음에 변경

"파이썬 manage.py의 SQL의 my_site"

로, 처음 작동 :이 모든 것을 '다시'라고 생각하지만, 테이블 여전히를 이전 열만 있습니다 (또는 내 모델을 사용하여 테이블에 액세스하려고 할 때 오류가 발생한다고 가정합니다).

그러면 데이터베이스에 직접 액세스하여 테이블을 삭제할 수 있다고 생각합니다. 그러나, 나는 명령을 실행할 수있는 DB에 "들어가는"방법을 모른다. 명령 프롬프트에서 sqlite3을 입력해도 인식되지 않습니다. 나는 또한 "python manage.py sql my_site"를 시도했지만 sqlite3이 인식되지 않는다는 메시지를 다시 받았다.

제안 사항?

+0

나는 틀린 종류 pls에서 배치하고있다 당신이 사용하고있는 OS를 지정하고 또한 Django는 syncDB의 두번째 뛰기에 테이블을 휴양하지 않거나 바꾸지 않는다는 것을 지정한다 –

답변

1

먼저 sqlite 용 명령 줄 도구를 설치해야합니다. 우분투/데비안에, 당신은 단순히 창에

sudo apt-get install sqlite3 

을 수행 할 수 있습니다, 당신은 여기에서 다운로드 할 수 있습니다 : http://www.sqlite.org/download.html. sqlite-shell-win32-xxx.zip과 비슷한 파일을 찾으십시오.

이처럼 사용
> sqlite3 /path/to/your/database 
;show some help 
.help 
; list all databases 
.databases 
; clear the contents of a table 
DELETE FROM <tablename>; 

또한 명령 줄 참조를 참조하십시오 : http://www.sqlite.org/sqlite.html 과 SQLite는 SQL 참조 : http://www.sqlite.org/lang.html.

"ALTER TABLE"sql 명령을 사용하면 테이블의 전체 내용을 삭제하지 않고도 열을 추가 할 수 있습니다. 이렇게하려면 sqlite3의 .schema 출력과 manage.py sql my_site 출력을 비교하여 추가해야하는 열을 찾습니다.

예 :

ALTER TABLE "buildreport_series" ADD COLUMN "parameters" text 
0

사용 장고의 데이터베이스 관리 도구 내장 :

python manage.py dbshell 

을 그리고 발행에 필요한 SQL 명령. sql 명령은 현재 테이블을 생성하는 데 필요한 sql이 무엇인지 (현재 모델에 정의 된대로) stdout에만 인쇄합니다.

관련 문제