烧瓶:改变迁移的位置'夹

时间:2017-06-15 08:12:37

标签: python flask migration

我的Flask项目层次结构是

project
├── controllers
└── models
    └── schema.py

当我运行python schema.py db init时,会在migrations下添加project文件夹,而不是models下。我在所有3个文件夹下都有__init__.py(为简洁起见,此处未显示)。我想在migrations下生成models文件夹。我该怎么做?

3 个答案:

答案 0 :(得分:9)

嗯..就像Oluwafemi所说,你可以在cli命令中将-d( - 目录)标志传递给你的经理脚本

alembic.util.exc.CommandError: Path doesn't exist: 'migrations'.  Please use the 'init' command to create a new scripts folder.

此解决方案的问题在于,每次输入db命令时都必须指定迁移路径,否则会出现以下错误:

directory

配置迁移路径的更好方法是将Migrate参数传递给manage.py中的import os from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from .application import app, db MIGRATION_DIR = os.path.join('models', 'migrations') migrate = Migrate(app, db, directory=MIGRATION_DIR) manager = Manager(app) manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run() 对象(或者在您的情况下为'schema.py')。

例如:

_Element

此外,我建议您将所有命令接口功能从'schema.py'移动到应用程序根路径中的不同python脚本(例如'manager.py'),并在模型旁边创建迁移文件夹,而不是在里面。 models文件夹不应包含除数据模型对象之外的任何内容!

希望它有用..

答案 1 :(得分:3)

You need to pass the directory option to the init command. This can be the path to the migrations directory. It is set to migrations by default.

python schema.py db init --directory models/migrations

Reference:

答案 2 :(得分:0)

或者您可以在alembic.ini

中更新脚本位置
# path to migration scripts
script_location = alembic