3

Flask アプリで SQLite データベースを MySQL データベースに置き換える作業を行っています。

以前は、Mega Flask チュートリアルのスクリプトを使用して、SQLAlchemy-Migrate を使用してデータベースの作成と移行を管理していました。

これらのスクリプトはそのままでは MySQL と互換性がないようで、MySQL で SQLAlchemy-Migrate を使用する方法については何も見つかりません。

MySQL を使用した開発中、モデルの変更やデータベースの移行を通常どのように処理していますか?

#Config
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:tehnoose@localhost/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
4

1 に答える 1

4

今日、まったく同じ状況になりましたが、最終的に完全に互換性があることがわかりました。スクリプトを実行する前に、mysql で新しいデータベースを作成し、SQLALCHEMY_DATABASE_URI をリセットするだけです。

于 2016-05-03T09:05:57.570 に答える