SQLAlchemy:返回column_property的默认值

时间:2016-11-09 20:45:30

标签: python sqlalchemy

我根据column_propertyselect)定义了一个SQLAlchemy coerced type。如何定义要返回的column_property的默认类型?通常它会返回一个列表列表,但如果select找不到任何内容,则会返回None。相反,我希望它返回一个空列表([])。一些示例代码:

def get_list(cls_type):
    select_list = select([cls_type.foo]).select_from(cls_type)
    select_list = select_list.correlate_except(cls_type).label('foo_list')
    coerce_array_select = select([type_coerce(func.array(select_list), ListColumnProp(Text))])
    return column_property(coerce_array_select, deferred=True)

1 个答案:

答案 0 :(得分:0)

最后想出来了 - 这个知识嵌入在TypeEngine类中,在上面的例子ListColumnProp中。在这种情况下,它是通过TypeEngine - TypeDecorator的子类实现的。例如:

class ListColumnProp(TypeDecorator):
    impl = ARRAY

    def process_result_value(self, value, dialect):
        if value:
            return [tuple(json.loads(v)) for v in value]
        else:
            return []