파이썬 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 명령을 입력하자.
'백엔드' 카테고리의 다른 글
API 개발하기(미니터 : 회원가입) (0) | 2021.08.07 |
---|---|
Do it! 모델 만들기 (0) | 2021.08.06 |
ORM(object relational mapping) (0) | 2021.08.06 |
블루프린트 라우트 함수 관리 (0) | 2021.08.04 |
플라스크 어플리케이션 만들기_초보 (0) | 2021.08.01 |