본문 바로가기

문돌이 존버/Django 스터디

우분투(Ubuntu) 환경, 장고(Django)에서 DB 값 변경하기

반응형

간혹 장고에 연결된 DB에 값이 잘못 들어간 경우가 생길 수 있습니다. 저 또한 그랬고요^^

여러 개가 아니라 꼭 5개 내외의 오류를 고치려고 하는데 다시 DB를 초기화하고, 장고 마이그레이션(migration) 역시 초기화하려면 귀찮겠죠. 그래서 이럴 때는 장고 내에서 간단하게 DB에 들어간 값을 변경할 수 있습니다.

아래는 티스토리 코드블록에서 파이썬이지만 실제 우분투(Ubuntu) 환경에선 콘솔창이라고 생각하시면 됩니다. 

python manage.py shell
>>> from project_app.models import *

# 변경해야 하는 값 확인
>>> TBL_TEST_INFO.objects.get(disease='감가')
# 외래키가 적용된 경우
>>> TBL_TEST_INFO.objects.get(disease=TBL_TEST2_INFO.objects.get(disease='감가'))

# 본격적인 변경 작업
>>> sample = TBL_TEST_INFO.objects.get(disease='감가')
>>> sample.disease = '감기' 
>>> sample.save()

이렇게 하면 '감가'라고 잘못 적혀있던 질환 명이 '감기'라고 제대로 저장될 것입니다. 다시 python manage.py shell 을 켜서 확인하시거나 GUI로 DB를 확인할 수 있으면 직접 확인하면 되겠습니다.

 


 

(추가) 제가 작성한 다른 글에 이미 소개된 것이지만 본 글을 읽으시는 분들을 위해! 다시 한 번 우분투 환경에서 장고 마이그레이션과 DB를 초기화하는 방법을 설명하겠습니다. 위와 마찬가지로 아래는 모두 우분투 콘솔창에서의 명령어들입니다.

# migration 여부 확인
python manage.py showmigrations

# app 폴더에 있는 migration 폴더 진입
cd migration
# py 파일 모두 제거
rm 0001_initial.py 
sudo mysql -u username -p
# password 입력

> show database;
> drop database "DBname"; # 기존 DB 지우기
> create database "DBname"; # 다시 생성하기
> quit;

이미 마이그레이션된 상태에서 python manage.py showmigrations 을 입력하면 마이그레이션된 리스트 왼쪽에 [x] 표시를 볼 수 있을 것입니다. 위의 과정을 다 거친 후 다시 확인해보면 [ ] 와 같은 표시가 나타납니다. 즉 마이그레이션되지 않았다는 것이죠. 

이제 다시 

python manage.py makemigrtions
python manage.py migrate

을 진행하면 새롭게 마이그레이션 될 것입니다. 

728x90
반응형