繁体   English   中英

Flask Rest API SQLAlchemy 外键错误

[英]Flask Rest API SQLAlchemy foreign key error

当我尝试“flask db migrate”时出现 SQLALchemy 错误

NoReferencedTableError: Foreign key associated with column 'user.menu_id' could not find table 'menu' with which to generate a foreign key to target column 'id

菜单表

class Menu(db.Model):
   __tablename__ = 'menus'
   id = db.Column(db.Integer(), primary_key=True)
   name = db.Column(db.String(64), index=True, unique=True)
   price = db.Column(db.String(64), index=True, unique=True)
   description = db.Column(db.String(64), index=True, unique=True)
   picture = db.Column(db.String(64), index=True, unique=True)
   create_date = db.Column(db.DateTime, default=datetime.utcnow)
   users = db.relationship('User', backref="menu", lazy=True)

用户表

class User(Model):
""" User model for storing user related data """

   id = Column(db.Integer, primary_key=True)
   email = Column(db.String(64), unique=True, index=True)
   username = Column(db.String(15), unique=True, index=True)
   name = Column(db.String(64))
   password_hash = Column(db.String(128))
   admin = Column(db.Boolean, default=False)

   joined_date = Column(db.DateTime, default=datetime.utcnow)    
   userdataset = db.relationship("Dataset", backref="user", lazy="dynamic")
   menu_id = Column(db.Integer(), db.ForeignKey('menu.id'), nullable=False)
   def __init__(self, **kwargs):
      super(User, self).__init__(**kwargs)

我怎么解决这个问题? 我哪里做错了?

您已使用“菜单”model 中的此__tablename__属性将“菜单”表重命名为“菜单”:

__tablename__ = 'menus'

然后您尝试引用“菜单”表,而实际上它的名称已更改为“菜单”。 解决此问题的最简单方法是将您的User.menu_id列更改为此:

menu_id = Column(db.Integer(), db.ForeignKey('menus.id'), nullable=False)

解决此问题的另一种方法是将__tablename__属性修改为“菜单”。 (你也可以直接删除它。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM