Python 应用程序工厂迁移时出错
run.py manage.pyPython 应用程序工厂迁移时出错,python,flask,factory-pattern,flask-migrate,flask-cli,Python,Flask,Factory Pattern,Flask Migrate,Flask Cli,run.py manage.py db = SQLAlchemy() migrate = Migrate() def create_app(): app = Flask(__name__) db.app = app db.init_app(app) migrate.init_app(app, db) return app if __name__ == '__main__': application = create_app() appl
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
db.app = app
db.init_app(app)
migrate.init_app(app, db)
return app
if __name__ == '__main__':
application = create_app()
application.run()
运行时:python manage.py db init
from flask_migrate import MigrateCommand, Manager
from run import create_app
manager = Manager(create_app())
manager.add_command('db', MigrateCommand)
我尝试将FLASK_APP导出为run,run.py,run.create_APP,run:create_APP(),但仍然出现上面显示的错误。导致此错误的原因是什么?
flask\u migrate
将尝试从flask script
使用管理器,但仅当安装了flask script
时
简单地做,它应该会起作用。您也可以直接从flask\u脚本
导入
pip安装flask\u脚本
管理.py
Usage: flask db init [OPTIONS]
Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.
For more information see http://flask.pocoo.org/docs/latest/quickstart/
有两种方法可以运行Flask Migrate命令。较新的方法使用Flask CLI,较旧的方法使用Flask脚本。因为您似乎没有安装Flask脚本,所以我假设您打算使用Flask CLI 所以您需要扔掉
manage.py
,因为这只适用于Flask脚本。然后将应用程序
变量移动到全局范围:
from flask_migrate import MigrateCommand
from flask_script import Manager
from run import create_app
app = create_app()
manager = Manager(app)
manager.add_command('db', MigrateCommand)
然后设置FLASK\u应用程序变量:
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
db.app = app
db.init_app(app)
migrate.init_app(app, db)
return app
application = create_app()
if __name__ == '__main__':
application.run()
现在,您应该能够使用flask run
运行应用程序,并使用flask db
运行数据库命令
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
db.app = app
db.init_app(app)
migrate.init_app(app, db)
return app
application = create_app()
if __name__ == '__main__':
application.run()
$ export FLASK_APP=run.py