0

我对模型事物有方法:

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,如果需要进行计算。这就是我在其他地方的做法,我正在努力适应使用 python 来做这件事。

这不像我想要的那样工作,我遇到了很多错误......有什么更好的方法?

编辑:

简而言之,就是这种方法。我有thing_instance 并调用thing_instance.method()。我得到的错误是:

sqlalchemy.exc.InterfaceError: (InterfaceError) Error binding parameter 0 - probably unsupported type

这可能更有用。

我会根据要求放置更具体的代码,但这会分散我的问题。这里的问题是:如果未设置列值,我该如何在 sqlalchemy 模型上编写一个计算和更新实例列值的方法?以pythoinic / sqlalchemic方式?我尝试的变体没有奏效,所以我把它放在一边,问了这个问题

编辑2:

这是一个列类型错误.....计算的值是一个列表,我需要转换或使用 PickleType 作为列。任何指针仍然赞赏。

4

1 回答 1

0

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

于 2012-05-09T20:06:27.827 回答