반응형
간혹 장고에 연결된 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
반응형
'문돌이 존버 > Django 스터디' 카테고리의 다른 글
Django DRF JWT를 이용한 회원가입/로그인 구현 - (2) (5) | 2021.01.02 |
---|---|
Django DRF JWT를 이용한 회원가입/로그인 구현 - (1) (0) | 2020.12.30 |
Django 데이터 변수를 javascript에 넘기기 feat. 카카오맵 API (1) | 2020.09.24 |
Django migration 초기화 진짜 해결법! (linux 버전 포함) (2) | 2020.08.27 |
Django용 MySQL에 csv 파일 업로드 + 데이터를 csv 파일로 변환 (0) | 2020.08.26 |