IT/파이썬

플라스크에서 ORM 사용하기 1

thesse 2021. 5. 23. 22:43
300x250
반응형

SQLAlchemy : 플라스크 ORM 라이브러리 중 하나

Flask-Migrate : 파이썬 모델을 이용해 테이블 생성, 컬럼 추가 등 하게 해주는 라이브러리

 

* ORM이란? 2019.08.27 - [IT/자바] - ORM, JPA, Hibernate

 

 

 

설치

Flask-Migrate 설치하면 SQLAlchemy도 같이 설치됨

(myproject) C:\projects\myproject>pip install Flask-Migrate

Collecting Flask-Migrate
  Downloading Flask_Migrate-3.0.0-py2.py3-none-any.whl (12 kB)
  .
  .
  .  
Successfully installed Flask-Migrate-3.0.0 Flask-SQLAlchemy-2.5.1 Mako-1.1.4 SQLAlchemy-1.4.15 alembic-1.6.2 greenlet-1.1.0 python-dateutil-2.8.1 python-editor-1.0.4 six-1.16.0

 

config.py 작성

import os

BASE_DIR = os.path.dirname(__file__)

SQLALCHEMY_DATABASE_URI = 'sqlite:///{}'.format(os.path.join(BASE_DIR, 'pybo.db'))
SQLALCHEMY_TRACK_MODIFICATIONS = False  # 이벤트 처리 옵션

* sqlite는 파이썬 기본 패키지에 포함되어있음

 

 

pybo/__init__.py 파일 수정

from flask import ...
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy

import config
db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = ...
    
    # config.py 항목을 app.config 환경 변수로
    app.config.from_object(config)
    
    # ORM 전역변수 초기화
    db.init_app(app)
    migrate.init_app(app, db)

    # bp 객체 등록
    ...

    return app

 

 

db 초기화

(myproject) C:\projects\myproject>flask db init

migrations 폴더 생성됨

 

 

 

* flask db init 명령어는 최초 한번만 수행됨

이후로는 모델을 생성/변경할 때 flask db migrate,

변경된 모델을 실제 db에 적용할 때 flask db updrade만 쓰면 됨

300x250
반응형