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会这么做。