django로 프로젝트를 진행할 때 외부 db를 가져와서 작업을 해야 하는 경우가 있다. 일일히 models.py 에 작성해야 하는데 만약 외부 db 테이블이 백개라면 너무 번거로운 일이 된다. 이럴 때 사용하는게 장고의 inspectdb 기능이다. settings.py 에 연결할 외부 db만 명시해주면 python manage.py inspectdb
명령어를 통해 외부 db를 models.py로 가져올 수 있다.
# settins.py
DATABASES = {
'default': {
'ENGINE': '',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
이부분에 연결할 외부 db 정보를 입력하면 된다.
만약 현재 db가 있고 추가적으로 외부 db를 연결하고 싶다면 아래처럼
default
외에 추가로 작성하면 된다.
# settings.py
DATABASES = {
'default': {
'ENGINE': '',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
'external': {
'ENGINE': '',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': ''
}
}
external
은 예시이고 원하는 대로 지으면 된다.
settings.py 에 db 정보 작성을 하고 나면 inspectdb 를 사용하여 외부 디비를 가져오면 된다.
$ python manage.py inspectdb > apps/models.py(저장을 원하는 models.py 위치)
$ python manage.py inspectdb > apps/models.py(저장을 원하는 models.py 위치) --database external
이렇게 하면 원하는 위치에 외부 db 테이블들이 불러와진다.
primary_key=True
를 추가해주면 된다.managed=False
를 managed=True
로 변경해주면 된다.
좋은 정보 감사합니다