2014-10-13 1 views
2

Flask 앱에서 SQLite 데이터베이스를 MySQL 데이터베이스로 대체하려고했습니다.SQLAlchemy-Flask에서 MySQL 데이터베이스로 마이그레이션하는 방법

이전에는 Mega Flask Tutorial의 스크립트를 사용하여 SQLAlchemy-Migrate를 사용하여 데이터베이스 생성 및 마이그레이션을 관리했습니다.

이 스크립트는 기본적으로 MySQL과 호환되지 않으므로 MySQL과 함께 SQLAlchemy-Migrate를 사용하는 방법을 찾을 수 없습니다.

MySQL을 사용하여 개발할 때 일반적으로 어떻게 모델 및 데이터베이스 마이그레이션에 대한 변경 사항을 처리합니까?

#Config 
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]/app' 
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository') 

#db_create.py 
from migrate.versioning import api 
from config import SQLALCHEMY_DATABASE_URI 
from config import SQLALCHEMY_MIGRATE_REPO 
from app import db 
import os.path 
db.create_all() 
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO): 
    api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository') 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) 
else: 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO)) 

#Traceback 

    Traceback (most recent call last): 
    File "db_create.py", line 12, in <module> 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.ve 
rsion(SQLALCHEMY_MIGRATE_REPO)) 
    File "C:\pyprojects\cc\flask\lib\site-packages\migrate\versioning\api.py", lin 
e 133, in version 
    repo = Repository(repository) 
    File "C:\pyprojects\cc\flask\lib\site-packages\migrate\versioning\repository.p 
y", line 77, in __init__ 
    self.verify(path) 
    File "C:\pyprojects\cc\flask\lib\site-packages\migrate\versioning\repository.p 
y", line 98, in verify 
    raise exceptions.InvalidRepositoryError(path) 
migrate.exceptions.InvalidRepositoryError: C:\pyprojects\cc\db_repository 
+1

Flask Mega Tutorial의 저자가 [Flask-Migrate] (http://flask-migrate.readthedocs.org/en/latest/)를 확인하십시오. – dirn

+0

왜 호환되지 않는다고 생각합니까? 사용중인 코드 및 오류 내용과 같은 질문에 세부 정보를 추가하십시오. – davidism

+0

@davidism이 (가) 코드로 업데이트되었습니다. – Chockomonkey

답변

4

오늘 정확히 똑같은 상황이 발생했습니다. 마침내 완벽하게 호환되는 것으로 나타났습니다. mysql에 새 데이터베이스를 만들고 스크립트를 실행하기 전에 SQLALCHEMY_DATABASE_URI를 재설정하십시오.

+0

안녕하세요. 스택 오버플로에 오신 것을 환영합니다. 주변을 둘러보고 [둘러보기]를 읽고 [도움]을 읽으십시오. [답변]에 대해서도 읽을 수 있습니다. – Sampada

+0

아 알아. 나는 dirn이 제안한 것처럼 Flask-Migrate를 사용하여 끝내었다. – Chockomonkey