如何修复NoForeignKeysError

时间:2017-03-12 03:37:41

标签: python flask sqlalchemy

我一直收到这个错误:

  

“sqlalchemy.exc.NoForeignKeysError:无法确定连接条件   在关系Parent.children上的父/子表之间 - 那里   没有连接这些表的外键。确保引用   列与ForeignKey或ForeignKeyConstraint相关联,或   指定'primaryjoin'表达式。“

我按照SQLAlchemy文档中的指南进行操作,但我仍然收到此错误。

class Parent(db.Model):
    __tablename__ = 'parent'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text) #maybe add unique
    children = db.relationship('Child', backref='parent', cascade = "all, delete-orphan", lazy='dynamic')

def __init__(self, name):
    self.name = name

def add(self, parent):
    db.session.add(parent)
    return session_commit()


class Child(db.Model):
    __tablename__ = 'child'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    parent_id = db.Column(db.Integer, db.ForeignKey('Parent.id'))

def __init__(self, name, parent):
    self.name = name
    self.parent_id = parent

def add(self, child):
    db.session.add(child)
    return session_commit()

根据在线指南,我看起来不对,但我似乎无法找到关系问题。

另外,不应该

parent_id = db.Column(db.Integer, db.ForeignKey('Parent.id'))

parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))

其中parent是表名?我得到一个错误,它告诉我“关系'父母'不存在”

1 个答案:

答案 0 :(得分:0)

您设置父模型的表名称 tablename =“parent”。因此parent_id的定义应该是parent_id = db.Column(db.Integer(),db.ForeignKey(“parent.id”))。您可以在子模型中定义一个名为parent的关系,或者通过在子关系的define中设置foreign_keys的值,在Parent模型中指定子关系的外键。