미니 프로젝트를 진행하는 중 Vertabelo로 데이터베이스를 설계하고 SQL 스크립트를 실행하여 이미 테이블과 칼럼을 다 만들어둔 상태에서 장고를 연결하려고 하니 models.py 에서 자꾸만 에러가 발생하는 문제가 있었다.
당연히 아직 장고에 익숙치 않던 나는 기본 개념조차 부족하니 왜 에러가 생기는지 몰라 검색해보았는데 장고는 models 부분에 데이터베이스와 연결이 되어있지 않으면 당연히 에러가 생기는 구조로 되어있다고 한다. ORM을 사용하기 때문이라는데 이 부분은 추후에 추가로 작성해보도록 하겠다.
기존 DB -> 장고 마이그레이션
기존에 사용중이거나 새로 만들어 장고에서 연결 할 필요가 있는 데이터베이스를 마이그레이션 하는 방법은
inspectdb 명령어로 이루어진다.
# inspectdb 뒤 > 는 장식이 아니였다!
# 나는 그것도 모르고 3~4번 시도한 뒤에 뭔가 잘못되었음을 깨달았다
python manage.py inspectdb > 경로/model.py
여러개의 DB가 연결된 상황이라면?(혹은 여러개를 해야 한다면)
DATABASES = {
'default_db': {
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.sqlite3',
},
'postgresql_db': {
'NAME': 'post',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'abcd',
'PASSWORD': 'abcd',
}
}
위와 같이 settings.py 에서 2개 이상의 데이터베이스를 연결하도록 설정해주면 된다. 위와 같이 설정하였을 때 오류가 발생한다면 모듈을 설치하지 않아 발생하는 것으로 목적에 맞는 패키지를 찾아 설치해 주면 해결이 된다.
그래서 다중 연결 상태라면 다음과 같이 명령어를 입력하면 궁금증은 모두 해결이 된다.
# 기본
python manage.py inspectdb --database=postgresql_db
# 경로 설정 필요시
python manage.py inspectdb --database=postgresql_db > 경로/models.py
이런 기본적인 것도 모르고 무작정 시도하는 것은 좋지 않은 것이라고 생각은 하지만 하루종일 책읽고 강의만 보고 하는 것 보단 헤딩해가면서 공부하는게 더 이해가 잘 되기도 하고 습득도 빠른 것 같아 이런 방식으로 프로젝트를 진행하고 있지만
솔직히 많이 부끄럽다...
이 포스팅도 이런것도 모른다고? 같은 소리 들을까봐 쓸까말까 했는데 나 처럼 아무것도 모르는 상태에서 해야 하는 열정적인 주니어 개발자들이 많을 것이라 생각하고 쓰게 되었다
'기타 > Django' 카테고리의 다른 글
[Django] 쿠키와 세션 (0) | 2023.06.29 |
---|