장고 테이블 삭제하기

소요 시간: 3분

테이블 삭제는 생각보다 간단하지만, 그래도 항상 데이터베이스 구조에 영향을 주는 작업이라 신중하게 처리해야 한다. 이번 작업은 하나의 모델을 삭제하는 것이었고, 그 과정은 다음과 같았다.


모델에서 테이블 삭제

먼저, 삭제하려는 테이블에 해당하는 모델을 찾아 models.py에서 지워줬다. 내가 삭제하려던 모델은 MyModel이었는데, 그냥 모델 클래스 자체를 아예 삭제했다. 삭제를 잊고 사용하지 않는 필드만 지우면 나중에 혼란이 올 수 있으니, 아예 깔끔하게 지우는 것이 좋다.

# myapp/models.py

# 삭제할 모델을 찾아 삭제
class MyModel(models.Model):
    name = models.CharField(max_length=100)
    # 다른 필드들

이 모델을 완전히 지우고 나서, 다음 단계로 넘어갔다.


마이그레이션 파일 생성

모델을 삭제한 후에는 Django에서 데이터베이스와 동기화할 수 있도록 마이그레이션 파일을 만들어야 한다. 이 작업은 Django가 자동으로 해주니 간단하다. 터미널에 makemigrations 명령어를 실행했다.

python manage.py makemigrations

이 명령어는 내가 삭제한 모델을 감지해서, 데이터베이스에서 테이블을 삭제할 수 있는 마이그레이션 파일을 생성해 준다. 이번에도 migrations 폴더 안에 새 파일이 잘 생성되었다. 파일을 열어보니, DeleteModel이라는 구문이 포함된 걸 확인할 수 있었다. 잘 진행되고 있다는 증거다.


마이그레이션 적용

이제 본격적으로 데이터베이스에서 테이블을 삭제할 차례다. 여기서 실수하지 않기 위해 신중하게 migrate 명령어를 실행했다.

python manage.py migrate

이 명령어는 Django가 생성한 마이그레이션 파일을 적용해서, 데이터베이스에서 해당 테이블을 삭제한다. 성공적으로 테이블이 삭제됐다는 메시지를 확인하고 나니 마음이 놓였다.


마이그레이션 상태 확인 (선택 사항)

마지막으로, 혹시 내가 생각하지 못한 다른 변경 사항은 없는지 확인해보기 위해 showmigrations 명령어도 사용해봤다.

python manage.py showmigrations

현재까지 적용된 마이그레이션들이 모두 표시되었고, 내가 방금 적용한 테이블 삭제 작업도 잘 반영되어 있었다.


Django에서 테이블을 삭제하는 과정을 완료하면서, 마이그레이션의 중요성을 다시 한번 실감했다. 모델을 삭제하는 것 자체는 코드 몇 줄 지우는 일이지만, 실제 데이터베이스와의 동기화는 Django가 얼마나 체계적인지 다시 한번 느끼게 해줬다. 마이그레이션 덕분에 데이터베이스를 직접 건드리지 않고도 안전하게 테이블을 삭제할 수 있었다.

Django 프로젝트에서 테이블을 삭제해야 하는 상황이 온다면, 나중에 또 참조할 수 있도록 오늘 과정을 기록으로 남긴다.

장고 리스트