2016-10-13 70 views
-1

出於某種原因,下面的代碼產生持續性的錯誤: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) 

非常感謝。

+0

只能刪除的東西,來自數據庫。查詢你想要刪除的內容,然後刪除它。 – davidism

+0

謝謝,想通了。非常感激。 – Shanks

回答

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)