SqlAlchemy模型循环导入或关系映射器错误

2024-04-27 21:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用sqlalchemy声明我的flask应用程序模型时,我面临一个错误。 我有两种型号:

路径: api.blueprints.admin.models

from api.models import *

class Blacklist(db.Model):
    __tablename__ = 'blacklist'

    id = db.Column(db.Integer, primary_key=True)
    jti = db.Column(db.String(36), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='SET NULL'), nullable=True)
    created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)


路径: api.models:

from api.extensions import db, ma

class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    blacklist_user = db.relationship('Blacklist', backref='group', lazy=True)

我试图在用户模型上传播黑名单模型以创建一个文件,但似乎没有,因为我没有引用用户关系黑名单

sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class User->users, expression 'Blacklist' failed to locate a name ("name 'Blacklist' is not defined"). If this is a class name, consider adding this relationship() to the <class 'api.models.User'> class after both dependent classes have been defined.

两个不起作用的解决方案:

  1. 尝试将黑名单模型导入到用户文件似乎会导致循环导入错误

  2. 正在尝试设置init.py文件并将这两个文件导入为:

 from api.models import *
 from api.blueprints.admin.models import *
  1. 试图使用
  Base = Base = declarative_base()
  and let both models inherit from it instead of db.Models