我有一個模型方法的事情:更新模型的方法:SQLAlchemy的
def method(self, session):
if self.column_value is None:
self.column_value = some expensive calculation
session.add(self)
session.commit()
return self.column_value
else:
return self.column_value
所以,我可以運行thing_instance.method和返回COLUMN_VALUE,如果需要計算。這是我在別處做的,我正在嘗試適應做這個w/python。
這不工作,因爲我想,我得到錯誤嘉豪....什麼是更好的方法?
編輯:
這個方法是簡而言之。我有thing_instance並調用thing_instance.method()。我得到的錯誤是:
sqlalchemy.exc.InterfaceError: (InterfaceError) Error binding parameter 0 - probably unsupported type
這可能會更有用。
我會根據要求提供更具體的代碼,但這會分散我的問題。這裏的問題是:如何在sqlalchemy模型上編寫一個方法來計算並更新實例列值(如果未設置列值)?在pythoinic/sqlalchemic方式?我試圖在變化沒有工作,所以我把它放在一邊,問這個問題
EDIT2:
這是一個列類型錯誤.....計算值是一個列表,我需要轉換或者使用PickleType作爲列。任何指針仍然讚賞。
你能否提供一些你得到的錯誤,或者提供一些更好的代碼來更好的展示你的方法被調用? – Cryptite
我建議不要將會話邏輯直接放在模型類中。模型類應該簡單地表示數據,其他方法可以對該數據進行無狀態計算。如果你有其他的東西來處理會話和有狀態的行爲,我想你會發現你的應用程序在一般情況下更易於管理。 – wberry
在繼續之前,我確實重構了會話,參見上文。如果我需要做更多的事情,請指出我需要的資源,以便與這種背景有關。我敢肯定還有什麼地方可以放任何東西;在我的上下文中,「昂貴的計算」是一個導入的類,它操縱模型中的另一個字段以創建一個新字段。 – blueblank