我在模型Thing上有方法:
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作为列。任何指针仍然赞赏。
答案 0 :(得分:0)
您所指的错误是因为整数0是有问题类型的无效值?此外,如果thing_instance已经处于持久连接状态,则无需将其添加到会话中!另外,session.commit()
很可能不是你真正想要的,也许你的意思是session.flush()
?