Flask-migrate Изменений в схеме не обнаружено

Я пытаюсь понять, как работает flask и sqlalchemy. Ниже представлена ​​структура моего приложения.

введите описание изображения здесь

init .py содержит

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
import User

# Create a login manager object
login_manager = LoginManager()

app = Flask(__name__)

# Often people will also separate these into a separate config.py file
app.config['SECRET_KEY'] = 'mysecretkey'
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)
Migrate(app, db)

model.py

from test import db
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin



class User(db.Model, UserMixin):
    # Create a table in the db
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)


    def __init__(self, email, username, password,first_name,last_name):
        self.email = email

и app.py

# This is app.py, this is the main file called.
from test import app
from flask import render_template


@app.route('/')
def index():
    return 'Hello World'


if __name__ == '__main__':
    app.run(debug=True)

и я использую следующие команды для создания таблиц

  1. установить FLASK_APP =
  2. flask db init
  3. flask db migrate -m

Но миграция фляги не обнаруживает таблицу и отображает сообщение ниже

введите описание изображения здесь

Я не могу понять, как решить эту проблему. Кто-нибудь может указать, что я делаю неправильно. Спасибо.


person Deepak_Spark_Beginner    schedule 07.06.2020    source источник
comment
импортируйте db также в свой app.py, например from test import app, db Сообщите мне, работает ли это   -  person Kartikeya Sharma    schedule 07.06.2020
comment
Нет, это не сработало.   -  person Deepak_Spark_Beginner    schedule 07.06.2020
comment
вы куда-нибудь импортировали свои модели? Я не вижу import model в вашем коде.   -  person Miguel    schedule 07.06.2020
comment
После импорта модели все заработало. Спасибо.   -  person Deepak_Spark_Beginner    schedule 07.06.2020


Ответы (1)


Вам нужно import model в __init__.py

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
import User

# Create a login manager object
login_manager = LoginManager()

app = Flask(__name__)

# Often people will also separate these into a separate config.py file
app.config['SECRET_KEY'] = 'mysecretkey'
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)
Migrate(app, db)
from app import model

Это потому, что model.py зависит от __init__.py

person Kartikeya Sharma    schedule 07.06.2020