가상환경 생성 후 main branch에 초기 setting이 끝났다면 , 본격적으로 프로젝트를 시작한다.
반드시 main 브랜치에서 작업할 브랜치를 새로 생성한다. 까먹지말자
git checkout main
git branch feature/eunkyung-models
새로 만든 작업할 브랜치로 이동후 앱을 생성해준다.
startapp은 manage.py가 위치한 곳에서 실행해야 함.
git checkout feature/eunkyung-models
python manage.py startapp users #앱생성
생성된 models.py에 클래스를 작성하고 테이블을 생성해야한다.
from django.db import models class User(models.Model): name = models.CharField(max_length=45) email = models.CharField(max_length=45, unique=True) password = models.CharField(max_length=200) # 비밀번호는 암호화 해야하기 때문에 maxlen을200으로 설정해주어야 한다. number = models.CharField(max_length=45, default='') # 처음엔 PositiveIntegerField를 썼다가 - 이 들어오는 경우가 있기때문에 # CharField를 써야한다는 피드백을 받았다. nickname = models.CharField(max_length=50, default='') class Meta: db_table = 'users'
python manage.py makemigrations westagram(app이름)
python manage.py migrate
작성 후 mysql을 실행해서 데이터베이스가 잘 생성이 되었는지 확인을 해야 하는데 ...🤔
mysql -u root -p
SHOW databases; # database 확인
USE database이름; # 사용할 데이터베이스 선택
SHOW tables; # table 확인
DESC table_name; # 해당 table의 정보 확인
SELECT * FROM table_name # 해당 table의 모든 데이터 확인
SHOW databases;를 했을때 분명히 westagram 데이터베이스가 목록에 보였는데 use westagram; -> SHOW tables;를 했더니 비어있다는 것이였다😱😱😱
migrate도 몇번이나 시도했지만 잘 적용 되는척 하더니 아무것도 바뀌지 않았다..
이런종류의 오류가 처음이라 너무 멘붕 ... 하루를 꼬박 붙잡고있었다. 멘토님의 도움으로 겨우겨우 집나간 테이블을 찾아왔다 ! ㅠㅠ
초기세팅에서 my_settings.py와 settings.py를 연결해 줄때 제대로 확인하지 않은 탓이였다.
1) settings.py 파일에서 DATABASES = DATABASES 구문이 빠져있었고,
2) 아래쪽에 지우지 않고 넘어간 DATABASES 쪽으로 전부다 migrate가 되어서,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
분명 migration 은 제대로 된것 같았지만 테이블이 하나도 뜨지 않은 것이였다.
settings.py에서 위의 DATABASES = { 'dafault....} (기본데이터베이스) 를 지운다.
db.sqlite.3 파일과 users/migrations 아래에 존재하는 마이그래이션 했던 파일들을 _init _.py 만빼고 다 삭제해 주었다.
mysql에서 DROP database 명령어로 데이터베이스를 삭제후 재생성 해주었다.
다시 migrate를 해준후 show tables를 입력하면 원했던 데이터베이스와 연결이 되어 테이블이 다시 보이는 것을 알수있다 ! 👍
다음부턴 꼼꼼하게 살펴보고 한번 더 확인하도록 노력해야겠다...🤦♀️