超级sqlalchemy mixins默认值

时间:2013-03-05 15:20:37

标签: python database-design sqlalchemy mixins

我有一个sqlalchemy mixin,我想为mixin的专栏设置一个默认值,但我还没有找到直接的答案,并采用了那种科学方法的反复试验品种。这是我的第一次尝试,我还没有机会使用它:

class ExampleMixin(object):
    """Mixin for `AnExample`"""

    def __init__(self, example_id):
       self.example_id = HMAC("{}".format(urandom(32).encode('base_64'))).hexdigest()
       super(ExampleMixin, self).__init__(self.example_id)

    example_id = Column(String(255))

不可否认,我还没有充分理解super的使用,但是我需要一种方法来为mixin提供一个默认值,而不是将它放在接收mixin的模型中。我确定上述内容并不完全正确,但我是在哪里开始的。

如何提供仅在创建时初始化一次的默认值?

1 个答案:

答案 0 :(得分:0)

根据Mixing in ColumnsColumn Insert/Update Defaults,以下代码应达到您的目标:

def _example_id_default():
    return HMAC("{}".format(urandom(32).encode('base_64'))).hexdigest()

class ExampleMixin(object):
    """Mixin for `AnExample`"""

    example_id = Column(String(255), default=_example_id_default)