Проблема с миграциями БД для Flask

У меня есть файл app.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from config import Config

app = Flask(__name__)
app.debug = True
app.config.from_object(Config)

db = SQLAlchemy(app)
from models import Users

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)



if __name__ == '__main__':
    manager.run()

есть файл models.py

from app import db, app
from datetime import date, datetime


# As example https://www.youtube.com/watch?v=Y8i_UjuqunQ
class Users(db.Model):
    # Users
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(120), index=True, unique=True)
    last_name = db.Column(db.String(128))
    first_name = db.Column(db.String(128))
    created = db.Column(db.DateTime, default=datetime.now())
    user_days = db.relationship("Days", back_populates="user_days")
    user_tasks = db.relationship("Tasks", back_populates="user_tasks")
    user_chats = db.relationship("Chats", back_populates="user_chats")

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

    def __repr__(self):
        return '<User {}>'.format(self.username)

Далее когда я применяю миграцию (или создание БД) через

python app.py db init
python app.py db migrate
python app.py db upgrade

То получаю ошибку:

Traceback (most recent call last):
  File "app.py", line 12, in <module>
    from models import Users
  File "C:\Users\vandr\PycharmProjects\telegrambot_with_flask\models.py", line 1, in <module>
    from app import db, app
  File "C:\Users\vandr\PycharmProjects\telegrambot_with_flask\app.py", line 12, in <module>
    from models import Users
ImportError: cannot import name 'Users'

Не создается БД, не создается миграция


Ответы (1 шт):

Автор решения: Vlad Chikov

В терминале, в вашем виртуальном окружении где установлен Flask, выполнить:

(venv)$ flask db init
(venv)$ flask db migrate -m "Тут текст коммита"
(venv)$ flask db upgrade

Если вы используете PyCharm, то терминал в нём сразу работает в контексте вашего виртуального окружения. venv в данном примере - это имя виртуального окружения. После выполнения команды flask db migrate рекомендуется проверить корректность получившегося файла миграции, который находится в папке versions. После этого можно делать upgrade.

→ Ссылка