Python 超级与sqlalchemy混合默认值

Python 超级与sqlalchemy混合默认值,python,database-design,sqlalchemy,mixins,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('ba

我有一个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的模型中。我相信上面的说法并不完全正确,但这正是我的出发点

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

根据和,以下代码应满足您的要求:

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)

我已经尝试过了,每次都是创建同一个专栏,这让我很恼火,但我会再看一遍。