我根据column_property
(select
)定义了一个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)
答案 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 []