我的Flask项目层次结构是
project
├── controllers
└── models
└── schema.py
当我运行python schema.py db init
时,会在migrations
下添加project
文件夹,而不是models
下。我在所有3个文件夹下都有__init__.py
(为简洁起见,此处未显示)。我想在migrations
下生成models
文件夹。我该怎么做?
答案 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
答案 2 :(得分:0)
或者您可以在alembic.ini
# path to migration scripts
script_location = alembic