Skip to content Skip to sidebar Skip to footer

Flask Db Init Leads To "keyerror: 'migrate'

I created already a database and added 2 tables (venue, artist). This is a party from my app.py: import json import dateutil.parser import babel from flask import Flask, render_tem

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'"