如何将模型从 models.py 导入到 app.py?
How to import models from models.py into app.py?
将模型导入app.py时(from models import Message),出现错误“The 'message' table is already defined for this MetaData instance”。
如果不导入,而是将模型从 models.py 复制到 app.py,问题就解决了。
但是我不想这样做
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))
您可以使用 python 别名进行导入。例子
from Models import Message as ModelMessage
或您要使用的名称。您也可以在这里查看 Can you define aliases for imported modules in Python?
将模型导入app.py时(from models import Message),出现错误“The 'message' table is already defined for this MetaData instance”。 如果不导入,而是将模型从 models.py 复制到 app.py,问题就解决了。 但是我不想这样做
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))
您可以使用 python 别名进行导入。例子
from Models import Message as ModelMessage
或您要使用的名称。您也可以在这里查看 Can you define aliases for imported modules in Python?