我一直在使用Flask应用程序中的MySQL数据库替换我的SQLite数据库。
以前我一直在使用Mega Flask Tutorial中的脚本来管理我使用SQLAlchemy-Migrate创建和迁移数据库。
似乎这些脚本与开箱即用的MySQL不兼容,我无法真正找到有关如何使用SQLAlchemy-Migrate与MySQL的任何内容。
在使用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
答案 0 :(得分:4)
今天我的情况完全相同,最后我发现它们完全兼容。只需在mysql中创建一个新数据库,然后在运行脚本之前重置SQLALCHEMY_DATABASE_URI。