通过方法更新模型:SQLAlchemy

时间:2012-05-08 14:16:03

标签: python sqlalchemy

我在模型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作为列。任何指针仍然赞赏。

1 个答案:

答案 0 :(得分:0)

您所指的错误是因为整数0是有问题类型的无效值?此外,如果thing_instance已经处于持久连接状态,则无需将其添加到会话中!另外,session.commit()很可能不是你真正想要的,也许你的意思是session.flush()