How to import models from models.py into app.py?

When importing models into app.py (from models import Message), the error "The 'message' table is already defined for this MetaData instance" appears. The problem is solved if, instead of importing, duplicate the model from models.py into app.py. But I don't want to do this

models.py

from app import db
import sqlalchemy.types as types

class Message(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    function_name = db.Column(db.String(255), default=None)

app.py

from flask import Flask
from config import Configuration
from flask_sqlalchemy import SQLAlchemy

from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager

from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView



app = Flask(__name__)
app.config.from_object(Configuration)

db = SQLAlchemy(app)


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


from models import Message

admin = Admin(app)
admin.add_view(ModelView(Message, db.session))

Upvotes: 0

Views: 723

Answers (1)

Dennis
Dennis

Reputation: 116

You can use python alias for import. Example

from Models import Message as ModelMessage

or the name you would like to use. You can check here also Can you define aliases for imported modules in Python?

Upvotes: 1

Related Questions