2012-01-15 44 views
16

我在我的python代碼(收集twitter狀態並存儲在數據庫中)中出現瞭如下錯誤。SQLAlchemy嵌套回滾錯誤

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back by a nested rollback() call. To begin a new transaction, issue Session.rollback() first. 

我想知道問題是什麼,爲什麼會發生,以及如何解決它。我不知道nested rollback。有沒有簡單的例子發生nested rollback


編輯:該問題得到解決。 在這種情況下,直到我們明確地調用回滾時纔會執行回滾,所以當我們包含commit()時,我們應該在try語句中編寫它,並在http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

中寫入異常語句(在大多數情況下)中編寫 rollback()

而且,這裏是正確的代碼示例。我從上面的鏈接引用了這個。

try: 
    <use session> 
    session.commit() 
except: 
    session.rollback() 
    raise 
finally: 
    session.close() # optional, depends on use case 

回答

11
+1

明白了。 因此,我應該在異常聲明中明確地寫**「session.rollback()」**。 非常感謝。 – fbessho 2012-01-15 17:24:21

+3

鏈接沒有中斷,但該部分不存在了... – fedorqui 2013-11-08 13:15:08

+1

鏈接斷開...! – 2015-07-09 15:48:15