我建立了一個基於TurboGears應用程序,以2分貝工程 - 第二個 - 這我指的是MSSQL數據庫 - 被其他應用程序(不礦用 - 我的應用程序實際上是解決問題的破解 - 這樣我就可以使用無法控制的其他應用程序或MSSQL數據庫設置)釋放turbogears2處理具體的DB(控制事務管理器)
我正在寫一個特定的數據庫表與SQLAlchemy的(通過的TurboGears):
DBSession.add(object)
DBSession.flush()
的數據被寫入到數據庫 - 但TurboGears的應用程序保留在數據庫某種手柄,使使用DB選項卡中的主廣告應用程式樂可以從中讀取,但不能改變它。直到我停止渦輪機應用程序,然後一切正常。 我試着撥打:
DBSession.close()
但隨後的數據被神奇地從數據庫中刪除 - 可能是一個事務回滾。 我也試着撥打:
transaction.doom()
,有着相近的效果(或沒有任何影響,我不知道)
我讀到,在TurboGears的事務管理器(我猜repoze.tm)處理提交 但我無法確定 - 它何時被調用?我如何控制它?特別是當函數完成它的計劃運行時如何刪除數據庫句柄(我不能結束腳本,它是一個cron作業,每小時運行一次)。該tg2.1文檔是對這個問題非常不清楚
我也讀的地方,我應該重寫commit_veto - 但不明白 - 我應該怎麼做,在哪裏呢?在我的應用程序中,我應該調用transaction.abort().doom()或其他什麼?
我也嘗試使用事務掛鉤相同的功能,但並沒有成功實際調用掛鉤
感謝您的幫助。
版本數據:
- 的TurboGears 2.1.3
- SQLAlchemy的0.7
- MSSQL 2005
- 使用pyodbc連接MSSQL
我會接受,雖然我發現這個問題是有一點不同 - TG2處理提交基於repoze.tm所以實際上調用DBSession.commit()一個事務管理器給出錯誤信息,你應該真的叫交易。承諾() – alonisser