[Sqlacodegen] 기존에 만들어진 DB를 모델로 만들기

lsh9672·2022년 1월 29일
2

flask

목록 보기
1/1
post-thumbnail

flask로 웹 개발을 하게 되면 주로 sqlalchemy를 ORM으로 사용하게 된다.
대부분의 프로젝트에서는 기존에 만들어져 있는 DB를 그대로 사용하게 될텐데, 이때 ORM 사용을 위해서는 DB테이블을 클래스로 정의해주는 작업이 필요하게 된다.

기존의 DB구조를 보면서 class로 정의해주는 일은 상당히 오래걸리고 귀찮은 작업이다.

이를 위해 Django에서는 테이블을 읽어서 모델을 만들어주는 inspectdb라는 명령어가 있지만 sqlalchemy에서 제공하는 automap은 사용해본 결과, 원하는 모델구조를 잘 만들어주지는 않았다.

따라서 이를 위해서 다른 도구를 찾아본 결과, sqlacodegen이라는 라이브러리를 찾게 되었다.

Sqlacodegen


sqlacodegen은 DB테이블을 읽어서 Model로 만들어주는 유용한 라이브러리이다.

~필자의 경우, 이 라이브러리의 존재를 모르고 만들어진 디비를 보면서 모델로 만드는 헛짓거리를 했었다~

  • 설치 방법


설치방법은 다음과 같이 pip를 이용해서 설치한다.

$ pip install sqlacodegen

  • 사용 예

    다음과 같이 sqlacodegen "DB_URL"을 입력해주면 된다.

    DB_URL은 sqlalchemy에서 DB 연동을 위해 create_engine()에 넣어주는 URL동일하다.

    URL은 해당링크를 참고하길 바란다.

    링크 : https://docs.sqlalchemy.org/en/14/core/engines.html

$ 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

  • 사용 결과 예

    다음은 필자가 쿼리문으로 직접만든 테이블을 sqlacodegen을 이용해서 모델로 만들어 저장한 결과이다.

profile
백엔드 개발자를 희망하는 취준생입니다.

0개의 댓글

관련 채용 정보