覆盖SQLAlchemy中列的返回值;混合属性或自定义类型?

时间:2013-08-09 14:43:16

标签: python sqlalchemy

我需要一个非常快速的建议。我有一个表字段,可以包含NULL,一个或多个字符串,用';'分隔。

目前,模型中的列是照常定义的:

aliases = Column(String(255))

我有一个混合属性,它拆分字符串并返回一个列表:

def my_aliases(self):
    if self.aliases:
        return [i.strip() for i in self.aliases.split(';')]

如何更改模型的默认行为以摆脱无用的'self.aliases'并始终获取'self.my_aliases'的列表或无?

是否可以覆盖属性?

1 个答案:

答案 0 :(得分:0)

使用mapper或声明性API,您可以在类中创建计算属性。选项包括:

我假设您没有选择更改表格的字段。但是如果你这样做,那么将你必须解析的列表放在一个列中是一种“气味”。例如,当您的列表太长时会发生什么?最好为该数据设置一个单独的表,并use a straight-forward join获取别名列表。