Flask-Migrate - “请编辑“flask db init”上的配置/连接/日志记录设置”

lph*_*elf 8 flask flask-sqlalchemy alembic flask-migrate marshmallow

在过去的三天里,我一直在试图解决这个问题,但似乎无法得到它。已经无数次查看了这里和其他地方关于同一问题的其他帖子(参见这里这里这里,等等),显然我自己太密集了,无法弄清楚。所以我们在这里,任何帮助将不胜感激。

项目结构:

/project-path/
  /app.py
  /config.py
  /.flaskenv
  /app/__init__.py
  /app/models.py
  /app/routes.py
Run Code Online (Sandbox Code Playgroud)

配置文件

import os
from dotenv import load_dotenv

basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv(os.path.join(basedir, '.env'))

class Config(object):
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'bleh'
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///' + os.path.join(basedir, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
Run Code Online (Sandbox Code Playgroud)

应用程序.py

from app import create_app
app = create_app() 
Run Code Online (Sandbox Code Playgroud)

.flaskenv

FLASK_APP=app.py
Run Code Online (Sandbox Code Playgroud)

/应用程序/初始化.py

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_marshmallow import Marshmallow

from config import Config

db = SQLAlchemy()
migrate = Migrate()
ma = Marshmallow()

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    from app.models import Borrower

    db.init_app(app)
    migrate.init_app(app, db)

    from app.routes import borrowers_api
    app.register_blueprint(borrowers_api)

    return app
Run Code Online (Sandbox Code Playgroud)

/app/models.py

from app import db, ma
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema

class Borrower(db.Model):
    __tablename__ = 'borrowers'
    
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    borrower_name = db.Column(db.String(100), nullable=False, unique=True, index=True)
    
    def __init__(self, borrower_name):
        self.borrower_name = borrower_name

class BorrowerSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = Borrower
        include_relationships = True
        load_instance = True #Optional: deserialize to model instances  

borrower_schema = BorrowerSchema()
borrowers_schema = BorrowerSchema(many=True)
Run Code Online (Sandbox Code Playgroud)

/app/routes.py

from flask import Blueprint, request, jsonify

from app.models import Borrower, borrower_schema, borrowers_schema
from app import db

borrowers_api = Blueprint('borrowers_api', __name__)

# Add a borrower
@borrowers_api.route('/borrower', methods=['POST'])
def add_borrower():
    borrower_name = request.get_json(force=True)['borrower_name']
    new_borrower = Borrower(borrower_name)
    db.session.add(new_borrower)
    db.session.commit()
    return borrower_schema.jsonify(new_borrower)

# Get single borrower by id
@borrowers_api.route('/borrower/<id>', methods=['GET'])
def get_borrower(id):
    borrower = Borrower.query.get(id)
    return borrower_schema.jsonify(borrower)
Run Code Online (Sandbox Code Playgroud)

然而我仍然遇到以下情况:

(env-name) C:\Users\...\flask-scratchwork\flask-restapi-tryagain>flask db init
Creating directory C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations ...  done
Creating directory C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations\versions ...  done
Generating C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations\alembic.ini ...  done
Generating C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations\env.py ...  done
Generating C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations\README ...  done
Generating C:\Users\...\flask-scratchwork\flask-restapi-tryagain\migrations\script.py.mako ...  done
Please edit configuration/connection/logging settings in 'C:\\Users\\...\\flask-scratchwork\\flask-restapi-tryagain\\migrations\\alembic.ini' before proceeding.
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

lph*_*elf 19

没关系,我认为答案实际上只是继续进行 Flask db migrate,尽管:

Please edit configuration/connection/logging settings in 'C:\\Users\\...\\flask-scratchwork\\flask-restapi-tryagain\\migrations\\alembic.ini' before proceeding.
Run Code Online (Sandbox Code Playgroud)

因此,对于其他花几个小时试图准确辨别 Flask-migrate 希望您对 alembic.ini 中的“配置/连接/日志记录设置”进行什么类型的编辑的人来说......答案似乎只是继续 Flask db migrate

  • 此消息来自 Alembic,而不是 Flask-Migrate。这个想法是您应该检查配置文件并根据您的喜好调整设置。Flask-Migrate 提供了一个入门配置,应该适用于大多数开箱即用的项目,因此如果您没有任何自定义需求,则忽略它应该没问题。 (9认同)