본문 바로가기

백엔드

플라스크 ORM 라이브러리 사용하기

반응형

파이썬 ORM 라이브러리 중 가장 많이 사용하는 SQLAlchemy를 사용해 보자.

이와 더불어 파이썬 모델을 이용해 테이블을 생성하고 컬럼을 추가하는 등의 작업을 할 수 있게 해주는 Flask-Migrate 라이브러리도 사용해 보자.

 

01. ORM 라이브러리 설치하기

Flask-Migrate 라이브러리를 설치하면 SQLAlchemy도 함께 설치되므로 myproject 가상 환경에서 다음 명령을 수행하여 Flask-Migrate 라이브러리를 설치하자.

pip install Flask-Migrate

 

02. 설정 파일 추가하기

파이보에 ORM을 적용하려면 config.py라는 설정 파일이 필요하다.

루트 디렉터리에 config.py 파일을 생성하고 다음과 같은 코드를 작성하자.

SQLALCHEMY_DATABASE_URI는 데이터베이스 접속 주소이고 SQLALCHEMY_TRACK_MODIFICATIONS는 SQLAlchemy의 이벤트를 처리하는 옵션이다. 이 옵션은 파이보에 필요하지 않으므로 False로 비활성화했다.

지금 설정한 내용은 pybo.db라는 데이터베이스 파일을 프로젝트의 루트 디렉터리에 저장하려는 것이다.

 

03. ORM 적용하기

이어서 pybo/__init__.py 파일을 수정해 SQLAlchemy를 적용하자.

config.py 파일에 작성한 항목을 app.config 환경 변수로 부르기 위해 app.config.from_object(config) 코드를 추가했다. 그리고 전역 변수로 db, migrate 객체를 만든 다음 create_app 함수 안에서 init_app 메서드를 이용해 초기화했다.

플라스크에서는 이러한 패턴을 자주 사용한다. db 객체를 create_app 함수 안에서 생성하면 블루프린트와 같은 다른 모듈에서 불러올 수 없다. 따라서 db, migrate와 같은 객체를 create_app 함수 밖에서 생성하고, 실제 객체 초기화는 create_app 함수에서 수행한다.

 

04. 데이터베이스 초기화하기

이제 ORM을 사용할 준비가 되었으므로 flask db init 명령으로 데이터베이스를 초기화하자.

flask db init

이 명령은 데이터베이스를 관리하는 초기 파일들을 migrations라는 디렉터리에 자동으로 생성해 준다. 이때 생성되는 파일들은 Flask-Migrate 라이브러리에서 사용된다. 우리는 이 파일들에 대해서 알 필요는 없다. 그리고 데이터베이스를 초기화하는 flask db init 명령은 최초 한 번만 수행하면 된다.

 

 

데이터베이스 관리 명령어 정리하기

앞으로 모델을 추가하거나 변경할 때는 flask db migrate 명령이나 flask db upgrade 명령만 사용할 것이다. 즉, 앞으로 데이터베이스 관리를 위해 여러분이 기억해야 할 명령어는 이 2가지뿐이다.

명령어 설명
flask db migrate 모델을 새로 생성하거나
변경할 때 사용
flask db upgrade 모델의 변경 내용을
실제 데이터베이스에 적용할 때 사용

이 밖에도 여러 명령이 있지만 특별한 경우가 아니라면 이 2가지 명령어를 주로 사용할 것이다. 명령어 종류를 확인하고 싶다면 명령 프롬프트에서 flask db 명령을 입력하자.

반응형