Flask Db Init Leads To "keyerror: 'migrate'
Solution 1:
I think you should add the code below:
migrate = Migrate(app, db) # this
For further info you can check this link
Solution 2:
Flask comand uses env variable FLASK_APP, to know where Flask app is located. For your application you will have to set FLASK_APP=microblog.py, as goes in chapter 1.
source - https://www.kickstarter.com/projects/1124925856/the-new-and-improved-flask-mega-tutorial)
RUS - Помните, что flask команда полагается на переменную среды FLASK_APP, чтобы знать, где расположено приложение Flask. Для этого приложения вы хотите установить FLASK_APP=microblog.py, как описано в главе 1.
Solution 3:
You can have this setup
"""App factrory file"""from flask import Flask
from flask_migrate import Migrate
from app.config.config import APP_CONFIG
from app.db.database import db
defcreate_app():
"""App factory"""
app = Flask(__name__)
app.config.from_object(APP_CONFIG["development"])
db.init_app(app)
Migrate(app,db)
# Register blueprint apps
app.register_blueprint(homeViews)
return app
Flask migrate must have the app instance injected together with the Sqlachemy instance
For environment variables you can have this in your .env
FLASK_APP=yourapp.py
FLASK_RUN_HOST="localhost"
FLASK_RUN_PORT=
FLASK_ENV=development
FLASK_DB_USER=
FLASK_DB_PASSWORD=
FLASK_APP_SECRET_KEY=
For your config.py
from os import environ
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
classDevelopmentConfig(object):
"""
Development configuration just for local development
"""
SQLALCHEMY_DATABASE_URI = f"postgresql://{environ.get('FLASK_DB_USER')}:\
{environ.get('FLASK_DB_PASSWORD')}@localhost/db_name"
SQLALCHEMY_TRACK_MODIFICATIONS = FalseclassTestingConfig(object):
""" Testing configuration just for local development"""
...
classProductionConfig(object):
""" Deployment configuration for production development"""
...
APP_CONFIG = {
"development": DevelopmentConfig,
"testing": TestingConfig,
"production": ProductionConfig
}
Once you're done setting up you can running
>>> flask db init
>>> flask db migrate -m "Initial migrations"
>>> flask db upgrade
Solution 4:
Add Migrate(app,db)
to your project and just run the flask db migrate
command from outside the folder where your project is located and set the location of the flask app with:
On Windows-- set FLASK_APP=/absolute/path/to/flask/app
On Linux-- export FLASK_APP=/path/to/app/from/current/location
Then try flask db migrate
and it should work just fine.
Post a Comment for "Flask Db Init Leads To "keyerror: 'migrate'"