TypeDecorator子类试图与NO_VALUE进行比较

时间:2015-06-09 17:24:14

标签: python sqlalchemy

我有一个myTypeSA的子类sqlalchemy.types.TypeDecorator,它定义process_bind_paramprocess_result_value,如下所示,以允许myType个实例持久存储到数据库中:

    class myTypeSA(types.TypeDecorator):
        """ Decorate String type to translate myType instance into String in the database"""
        impl = types.String(15)

        def process_bind_param(self, value, dialect):
            if value is None:
                return None
            assert type(value) == myType
            return value.as_str()

        def process_result_value(self, value, dialect):
            if value is None:
                return None
            return myType.from_str(value)

在提交的某个时刻,sqlalchemy似乎试图查看对象是否已更改,并调用默认为sa.String TypeDecorator.compare_values的{​​{1}},即compare_values。这实际上只是TypeEngine.compare_values,在我的情况下断言,因为x是x == y的实例而y是sqlalchemy字符串:myType

我很想直接覆盖NO_VALUE以解决此问题,但我想知道我是否遗漏了某些内容,应该覆盖TypeDecorator.compare_valuescoerce_compared_value;详细说明何时使用这些方法的评论对我来说不是很清楚。如何处理与process_literal_param的比较?

由于

0 个答案:

没有答案