Я создаю приложение для фляг и пытаюсь настроить миграцию базы данных с помощью Flask-Migrate. У меня это работает, но у меня странная проблема: приложение/миграция не ищет файл .db в одном и том же месте, и мне нужно знать, как заставить их искать в одном и том же месте.
Мое приложение работает отлично, и я не получаю никаких ошибок. Flask-Migrate работает отлично, и я не получаю ошибок. Это упрощенный макет моего приложения в настоящее время:
app.py
app/
|- __init__.py
|- config.py
Когда я запускаю «flask run», он думает, что база данных находится здесь:
app.py
app/
|- __init__.py
|- config.py
|- app.db <--(In the app folder)
Но когда я запускаю «flask db upgrade», он думает, что база данных находится здесь:
app.py
app.db <--(In the main folder)
app/
|- __init__.py
|- config.py
У меня для SQLALCHEMY_DATABASE_URI установлено значение «sqlite:///app.db», и я действительно могу заставить их работать правильно, если постоянно меняю SQLALCHEMY_DATABASE_URI между «sqlite:///app.db» и «sqlite:///». ../app.db' между выполнением двух команд.
файл app.py
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
упрощенный __init__.py file:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from app.config import Config
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
migrate.init_app(app, db)
from app.routes import main
app.register_blueprint(main)
return app
упрощенный файл config.py
import os
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
Я ожидаю, что flask run и flask db upgrade увидят файл .db в одном и том же месте, но это не так. Вместо этого они видят их в дочерней или родительской папке соответственно.