legacy DB를 장고 서버에서 사용해야 할 상황이 생겼다.
그런데, 장고에서는 DB에 접근하기 위해 모델을 사용하기 때문에 DB 테이블을 모델로 바꿔야 하는 작업이 필요하다.
하지만 장고에서 고맙게도 이런 기능을 지원해준다.
공식문서 링크 : docs.djangoproject.com/en/3.1/howto/legacy-databases/
Integrating Django with a legacy database | Django documentation | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
공식문서에 따르면 상황에 따라 파라미터를 다르게 주어 세부사항을 설정할 수 있다.
변환할 DB는 장고 프로젝트의 settings.py에 연결된 정보를 따른다.
$ python manage.py inspectdb > model.py 를 하게되면 변환한 모델 내역을 model.py에 저장할 수 있다.
공식문서의 예제에 덧붙여 설명하면
변환된 장고 모델은 다음과 같다.
class Person(models.Model):
id = models.IntegerField(primary_key=True)
first_name = models.CharField(max_length=70)
class Meta:
managed = False #장고에서 이 테이블과 관련된 Creation, Modification, Deletion을 상관하지 않음
db_table = 'CENSUS_PERSONS' #DB 테이블의 이름
managed = False라는건 장고가 테이블을 관리하지 않는다는 의미이다.
그런데, mysql 등의 DBMS에서 지원되는 TINYINT 타입은 장고 모델에서 지원하지 않는 타입이기 때문에 엉뚱한 타입으로 변경될 수 있다고 한다. 이 때, 변경된 모델 속성 옆에는 ## This field type is a guess. 라고 붙음
공식문서에 따르면, 커스텀 모델 속성을 정의할 수 있다고 함
'Django' 카테고리의 다른 글
장고 User 모델 커스텀하기 (0) | 2020.12.18 |
---|---|
Django Model _set 메서드에 관하여 (0) | 2020.11.17 |