db.session.commit()的时候抛出sqlalchemy.exc.IntegrityError错误?


class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    category = db.Column(db.String(80))
    posts = db.relationship('Post', backref="posts", lazy="dynamic")

    def __repr__(self):
        return "<Category %s>" % self.category

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120))
    content = db.Column(db.Text)
    timestamp = db.Column(db.DateTime)
    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))

    def __repr__(self):
        return "<Post %s>" % self.title

在shell里面执行下面的代码的时候不会报错

>>> c=Category(category='flask')
>>> db.session.add(c)
>>> db.session.commit()

可是执行下面的代码的时候就抛出sqlalchemy.exc.IntegrityError错误了。

>>> p=Post(title='test', content='ccc', timestamp=datetime.utcnow(), category_id=c)
>>> db.session.add(c)
>>> db.session.commit()

我不知道哪里做错了。。估计是ForeignKey的问题?
以前不用ForeignKey的时候是没有报错的。。。

求教,谢谢~

flask sqlalchemy python

秘神流人偶 11 years, 8 months ago

好吧....我已经知道为什么了....这是不了解relationship导致的.....还有就是创建p实例写错了。。

双面维诺妮卡 answered 11 years, 8 months ago

Your Answer