개요

Flask 웹 개발에서 ORM으로 SQLAlchemy를 사용하기로 하고 진행을 하는데 예전 자바에서 쓰던 mybatis-generator 처럼 비슷하게 DB로 부터 스키마를 읽어 모델을 generation 하는 툴이 있을것 같아 찾아보았다. 이름은 flask-sqlacodegen이고 이 툴의 설치 및 사용법을 정리해둔다.

전제사항

필자는 파이썬3 + 맥 환경에서 설치를 한뒤 mysql로 부터 codegen 하는것으로 국한하여 정리한다.

설치

$ pip3 install flask-sqlacodegen
$ brew install mysql # .bashrc에 export PATH=$PATH:/usr/local/mysql/bin 추가
$ brew install openssl # .bashrc에 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ 추가
$ pip3 install mysqlclient

사용법

flask-sqlacodegen "mysql://id:password@DBHOST정보/DB이름" --flask > gen.txt

실제 dump 예제

아래와 같이 테이블 정보 pk를 포함한 컬럼 정보를 추출해서 코드를 생성해 주는것을 볼 수 있다. 테이블의 갯수가 많거나 칼럼 변화가 많은 개발 초창기에는 꽤 유용한 툴이라고 생각한다.

# coding: utf-8
from sqlalchemy import BigInteger, Column, DateTime, Integer, String, Text
from sqlalchemy.schema import FetchedValue
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()
metadata = Base.metadata


class ControllerHistory(Base):
    __tablename__ = 'controller_history'

    hist_key = Column(Integer, primary_key=True)
    task_key = Column(Integer)
    action = Column(String(16))
    reg_date = Column(DateTime)