Python - SqlAlchemy外键问题

时间:2017-11-25 01:26:58

标签: python flask sqlalchemy

所以,我从Flask的SQLAlchemy那里得到了很多错误,到目前为止,我在网上发现的任何内容都没有修复它,只会导致出现更多错误。我目前的型号代码在这里:

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    posts = db.relationship('Post', back_populates='author', lazy='dynamic',
                            primaryjoin='User.id == Post.user_id')
    created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow())

    @property
    def is_authenticated(self):
        return True

    @property
    def is_active(self):
        return True

    @property
    def is_anonymous(self):
        return False

    def get_id(self):
        return str(self.id)

    def __repr__(self):
        return "<User %r>" % (self.nickname)

class Post(db.Model):
    __tablename__ = 'post'
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Post %r>' % (self.body)

此代码的当前错误是:

sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'post.user_id' could not find table 'user' with which to generate a foreign key to target column 'id'

我完全不知道我做错了什么,为什么没有其他解决方案对我有用。

1 个答案:

答案 0 :(得分:2)

user.id需要users.id模型中的Post

user_id = db.Column(db.Integer, db.ForeignKey('users.id'))