繁体   English   中英

SQLAlchemy:UNIQUE 约束失败错误,但没有设置唯一约束

[英]SQLAlchemy: UNIQUE constraint failed error, yet no unique constraints set

我正在将 Flask 和 SQLAlchemy 与 SQLite 一起使用来创建一个应用程序,该应用程序可以跟踪您的储藏室中的物品以及您喜欢制作的食谱。

我被这个难住了。 我有一个表,其中的记录应该有可能有重复的字段。 每次我尝试在我的应用程序中为该表创建数据库条目时,都会引发“IntegrityError:UNIQUE 约束失败”。 这令人费解,因为它所在的列没有明确设置唯一约束。

这是我要插入的表的模型:

class PantryItem(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    amount = db.Column(db.String(12))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<PantryItem %r> % self.name'

这是应添加到数据库中的条目的视图代码:

@app.route('/pantry', methods=['GET', 'POST'])
@login_required
def pantry():

    form = IngredientForm() 
    pantry = PantryItem.query.filter_by(owner=g.user).all()

    if form.validate_on_submit():

        pantry_item = PantryItem(name=form.name.data, amount=form.amount.data, owner=g.user)
        db.session.add(pantry_item)
        db.session.commit()

        flash('You added %s to the pantry.' % pantry_item.name)
        return redirect(url_for('pantry'))

    return render_template('pantry.html', 
               form=form,
               user=g.user,
               pantry=pantry)

这是我在提交表单时遇到的错误:

IntegrityError: (IntegrityError) UNIQUE constraint failed: pantry_item.name u'INSERT INTO pantry_item (name, amount, user_id) VALUES (?,  ?, ?)' (u'Milk', u'2 cups', 1)

表中已经有一条名为“Milk”的 PantryItem 记录。

假设 PantryItem 的主键“id”将一条记录与另一条具有相同名称/数量/所有者的记录区分开来,我是否不正确? 还是我只是完全忽略了某些东西?

预先感谢您的帮助。

删除表或删除数据库并重新初始化。 每次进行模式更改时,必须删除表并重新初始化,它不仅仅是更新。

我遇到了同样的问题,我设置了app.run(debug=False)并且错误消失了。

暂无
暂无

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

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