MYSQLAlchemy / Flask не распознает миграции - PullRequest
0 голосов
/ 05 февраля 2019

Я новичок в Flask / MYSQLAlchemy / Postgres и все еще пытаюсь понять все это.

У меня есть приложение:

from flask import Flask
from flask_cors import CORS
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration


def create_app(*args, app_name="SMARRTBROKER_API"):
    # add sentry integration
    sentry_sdk.init(
        dsn="https://cd31f9dbcd56420fa0ca08422a441747@sentry.io/1369455",
        integrations=[FlaskIntegration()]
    )
    app = Flask(app_name)
    CORS(app, resources=r'/api/*')
    # CORS(app, resources={r"/api/*": {"origins": "*"}}, supports_credentials=True)
    app.config.from_object('api.config.DevelopmentConfig')

    from api.api import api
    app.register_blueprint(api, url_prefix='/api')
    # app.config['SQLALCHEMY_ECHO'] = True

    from api.models import db
    db.init_app(app)

    return app

И файл manage.py:

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

from api.application import create_app
from api.models import db, Lead, User, Setting, Category, Keyword, keyword_identifier, Product, Plan
from filter_class import Filter
from filter_keyword import FilterKeyword
from sqlalchemy.dialects.postgresql import array
from sqlalchemy import or_, not_
from sqlalchemy import any_
from datetime import datetime, timedelta
from sqlalchemy.orm.attributes import flag_modified
from classification import Classification

app = create_app()

migrate = Migrate(app, db)
manager = Manager(app)

# provide a migration utility command
manager.add_command('db', MigrateCommand)


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

И файл model.py:

"""
models.py
Data classes for the api application
"""

from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
from sqlalchemy.ext.mutable import Mutable
from sqlalchemy.dialects.postgresql import ARRAY
import enum
import locale

db = SQLAlchemy()

...


class Setting(db.Model):
    __tablename__ = 'settings'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow)
    import_settings = db.Column(db.JSON, nullable=True)

    def to_dict(self):
        return dict(
            id=self.id,
            name=self.name,
            created_at=self.created_at,
            label=self.label
        )


class Keyword(db.Model):
    __tablename__ = 'keywords'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, nullable=False)
    label = db.Column(db.Text, nullable=False, unique=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    updated_at = db.Column(db.DateTime, default=datetime.utcnow)
    leads = db.relationship('Lead', secondary=keyword_identifier)

    def to_dict(self):
        return dict(
            id=self.id,
            label=self.label,
            name=self.name,
            created_at=self.created_at
        )

...

И до тех пор, пока пару недель назад я не сделал какие-либо изменения в файле моделей, я мог запустить python manage.py db migrate и python manage.py db upgrade, и модели были изменены, и миграция будет проходить без проблем.Теперь, по какой-то причине, когда я запускаю команды переноса / обновления, ничего не происходит, и кажется, что мои изменения вообще не были распознаны.Есть идеи почему?

...