2013-04-30 9 views
0

데이터베이스를 초기 상태 (모든 테이블의 일부 하드 코드 된 항목)로 재설정하는 python 스크립트를 작성하고 있습니다. db는 기본 키와 외래 키가있는 여러 테이블로 구성됩니다.모든 테이블에서 항목 제거

스크립트를 실행할 때마다 모든 테이블에서 모든 이전 항목을 제거하고 기본 키 카운터를 재설정하고 샘플 항목을 삽입해야합니다.

은 현재이 같은이 달성하기 위해 노력하고 있어요 :이 때문에 일부 테이블에서 외래 키의 존재로 작동하지 않는

# Delete all the entries from the tables 
cursor.execute("DELETE FROM table1") 
cursor.execute("DELETE FROM table2") 
cursor.execute("DELETE FROM table3") 

# Reset the primary key counter and insert sample entries 
cursor.execute("ALTER TABLE table1 AUTO_INCREMENT = 1") 
cursor.execute("INSERT INTO table1(username, password) VALUES('user01', '123')") 

cursor.execute("ALTER TABLE table2 AUTO_INCREMENT = 1") 
cursor.execute("INSERT INTO table2(column1, column2) VALUES('column1_data', 'column2_data')") 

(그것은 나를 삭제하지 않습니다).

가 나는 models.py 스크립트를 사용하여 테이블을 생성 (나는 또한 장고를 사용), 그래서 내가이 다음과 같은 방법으로 해결할 수 있다고 생각 :

  1. 는 프로그래밍 방식으로 데이터베이스를 제거하고 같은과 새로 만듭니다 이것은 좋은 솔루션입니다
  2. 삽입 샘플 데이터 I는

을 쓴 스크립트를 사용하여 DB에 빈 테이블을 생성하는

  • 호출 models.py 스크립트의 이름 또는 나는 someth를 내려다하고 보내고있어?

  • +1

    다음과 같은 의미라면 :'DROP DATABASE mydb; CREATE DATABASE mydb;'그 다음에'./manage.py syncdb', 그러면 아마도 가장 쉽습니다. – Aya

    답변

    0

    나는 매월 스크립트를 사용하여 트랜잭션 테이블을 내용을 아카이브 한 후에 제거합니다.

    'truncate'명령을 사용해보십시오.

    truncate table [tablename];

    기본 키의 카운터 (자동 증가)가 자동으로 재설정됩니다. 그런 다음 insert 문을 사용하여 기본 정보를 채 웁니다.

    또한 테이블 기본 설정 (키, 인덱스 등)을 모두 유지합니다.

    관련 문제