2016-11-09 121 views
0

我正在基於select(具有coerced type)定義SQLAlchemy column_property。我如何定義column_property的默認類型以返回?通常它會返回一個列表列表,但如果select找不到任何內容,則返回None。相反,我希望它返回一個空的列表([])。一些示例代碼:SQLAlchemy:爲column_property返回默認值

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) 

回答

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 []