flask로 웹 개발을 하게 되면 주로 sqlalchemy를 ORM으로 사용하게 된다.
대부분의 프로젝트에서는 기존에 만들어져 있는 DB를 그대로 사용하게 될텐데, 이때 ORM 사용을 위해서는 DB테이블을 클래스로 정의해주는 작업이 필요하게 된다.
기존의 DB구조를 보면서 class로 정의해주는 일은 상당히 오래걸리고 귀찮은 작업이다.
이를 위해 Django에서는 테이블을 읽어서 모델을 만들어주는 inspectdb라는 명령어가 있지만 sqlalchemy에서 제공하는 automap은 사용해본 결과, 원하는 모델구조를 잘 만들어주지는 않았다.
따라서 이를 위해서 다른 도구를 찾아본 결과, sqlacodegen이라는 라이브러리를 찾게 되었다.
sqlacodegen은 DB테이블을 읽어서 Model로 만들어주는 유용한 라이브러리이다.
~필자의 경우, 이 라이브러리의 존재를 모르고 만들어진 디비를 보면서 모델로 만드는 헛짓거리를 했었다~
설치방법은 다음과 같이 pip를 이용해서 설치한다.
$ pip install sqlacodegen
$ sqlacodegen postgresql:///some_local_db
$ sqlacodegen mysql+oursql://user:password@localhost/dbname
$ sqlacodegen sqlite:///database.db
각 옵션들을 보고 싶다면 다음과 같이 입력하면 된다.
$ sqlacodegen --help
다음은 mysql에서 가져온 모델을 model.py 파일로 만드는 예시이다.
(파일이름은 원하는대로 바꿔도 된다.)
$ sqlacodegen mysql+mysqlconnector://user:password@host:port/database > model.py