Python 烧瓶:改变'的位置;迁移';文件夹
我有一个烧瓶项目层次结构Python 烧瓶:改变'的位置;迁移';文件夹,python,flask,migration,Python,Flask,Migration,我有一个烧瓶项目层次结构 project ├── controllers └── models └── schema.py 当我运行pythonschema.py db init时,migrations文件夹被添加到project下,而不是models下。我在所有3个文件夹下都有一个\uuuuu init\uuuuu.py(为简洁起见,此处不显示)。我想要在models下生成的migrations文件夹。如何操作?您需要将目录选项传递给init命令。这可以是迁移目录的路径。默认情况下,
project
├── controllers
└── models
└── schema.py
当我运行
pythonschema.py db init
时,migrations
文件夹被添加到project
下,而不是models
下。我在所有3个文件夹下都有一个\uuuuu init\uuuuu.py
(为简洁起见,此处不显示)。我想要在models
下生成的migrations
文件夹。如何操作?您需要将目录选项传递给init命令。这可以是迁移目录的路径。默认情况下,它设置为迁移
python schema.py db init --directory models/migrations
参考:
- API参考部分
- 好吧。。正如Oluwafemi所说,您可以在cli命令中将-d(--directory)标志传递给manager脚本
python schema.py db init --directory models/migrations
此解决方案的问题是,每次输入db命令时都必须指定迁移路径,否则将出现以下错误:
alembic.util.exc.CommandError: Path doesn't exist: 'migrations'. Please use the 'init' command to create a new scripts folder.
配置迁移路径的更好方法是将directory
参数传递给manage.py(或者在您的示例中是“schema.py”)中的Migrate
对象
例如:
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”移动到应用程序根路径(如“manager.py”)中的不同python脚本中,并在模型旁边而不是其中创建migrations文件夹。
“模型”文件夹不应包含数据模型对象以外的任何内容
希望对您有所帮助。或者您可以在
alembic.ini
# path to migration scripts
script_location = alembic
只有使用Alembic。我不认为OP会这么做。