Python 超级与sqlalchemy混合默认值
我有一个sqlalchemy mixin,我想为mixin的列设置一个默认值,但是我还没有找到直接的答案,我已经尝试了各种各样的科学方法。这是我第一次尝试,我还没有机会使用它: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
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)
我已经尝试过了,每次都是创建同一个专栏,这让我很恼火,但我会再看一遍。