두 가지 언어로 하나의 DB를 사용하려면 어떻게 해야 할까?
개발을 진행하다 보니 "하나의 언어로만 작업하게 될까?" 라는 의문을 갖게 되었다. 개발은 언어의 선택지가 다양해서 각 언어의 장단점이 존재하고, 장점만을 이용한다면 더 좋은 서비스를 개발할 수 있지 않을까?
(사실 두 가지 언어로 함께 개발하는 경우, 어떤 장단점이 존재하는지 모르겠다. 개발을 배우면서 계속 리마인드 하자.)
--> MSA가 궁금하다면~? 이곳으로
이와 같은 생각을 가진 사람들이 함께 작업한다면, 당연히 다양한 언어 개발자가 모이게 될 것이다. 이럴 경우, 하나의 sql을 사용해서 작업해야 할텐데 DB를 어떻게 사용해야 할까?
DB를 가져와도 models.py 없이 django의 ORM을 어떻게 사용할까?
내가 지금 공부하고 있는 Python과 보편적으로 쓰이는 Java를 예시로 들자면, Python은 DB에 쉽게 접근할 수 있도록 ORM이라는 명령어를 제공한다.
ORM은 Object Relational Mapping의 약자로 객체간의 관계를 바탕으로, sql쿼리문 없이 자동으로 DB data를 다룰 수 있도록 django에서 제공하는 기술이다.
python에서 ORM을 사용하려면 models.py에 모델이 작성되어야 한다. 단순히 DB만을 공유한다면 ORM을 사용할 수 없다고 생각했다. 이러한 문제를 해결하기 위해서는 모델도 함께 가져와야 하고, DB와 modelds를 함께 가져오려면 어떻게 해야할까?
inspectdb 명령어
위의 두 가지 의문을 해결할 수 있는 명령어가 inspectdb 명령어이다.
DB를 연동할 경우, 위와 같은 값이 default라는 key값으로 저장된다. 그러므로 다른 DB를 연동하고 싶은 경우에는 다른 key값을 생성하여 세부 옵션을 설정해주면 된다. 내 경우에는 ms라는 이름으로 연동을 했다.
그 후에 inspectdb 명령어를 통해 연동하는 방법은 아래와 같다.
# python manage.py inspectdb --database=디비명 > APP이름/models.py
내 경우를 예로 들면
# python manage.py inspectdb --database=ms > ma-feature/models.py
위와 같은 명령어를 입력했다.
DB를 연동한 후에 다른 문제가 발생하지는 않을까?
일단 model이 자동생성된 뒤에 sql이나 models.py를 통해 관계형 데이터베이스를 설정해줘야 한다. 예를 들면 M to M를 사용하기 위한 FK설정이 있다. 아직 이러한 방법을 활용하여 진행한 프로젝트가 없으므로 이후에 기회가 온다면 다시 공부해보고 싶다.
http://www.incodom.kr/Django_ORM