SQLAlchemy删除持久性错误

时间:2016-10-13 18:57:16

标签: python sqlalchemy

由于某种原因,下面的代码产生了一个持久性错误:

'<Data at 0x1041db8d0>' is not persisted

对象是否需要在被删除之前进行初始化,这里有什么问题?

if request.method == 'POST' and form3.validate():
    data_entered = Data(notes=form3.dbDelete.data)
    try:
        db.session.delete(data_entered)
        db.session.commit()
        db.session.close()
        return render_template('deleted.html', notes=form3.dbDelete.data)

非常感谢。

1 个答案:

答案 0 :(得分:0)

data_entered = Data(notes=form3.dbDelete.data)

这是创建Data的新实例(或行)。然后,您正在运行session.delete过程以将其从数据库中删除,但它从未插入(例如,通过session.commit())。

我猜这是你要做的事情:

try:
    data_entered = db.session.query(Data).filter(Data.notes == form3.dbDelete.data).one()
except sqlalchemy.orm.exc.NoResultFound:
    pass
else:
    try:
        db.session.delete(data_entered)
        db.session.commit()
        db.session.close()
        return render_template('deleted.html', notes=form3.dbDelete.data)