ndb Singleton模式

时间:2014-10-07 20:49:16

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我在appengine做了一个在线商店,我正在创建一个模型,它将在db中保存商店的设置,代码如下所示:

class StoreSettings(ndb.Model):
    name = ndb.StringProperty()
    homepageTitle = ndb.StringProperty()
    metaKeywords = ndb.StringProperty()
    metaDescription = ndb.StringProperty()
    timezone = ndb.IntegerProperty()
    currency = ndb.StringProperty()

是否有一种简单的方法可以使StoreSettings类成为单例?

由于

2 个答案:

答案 0 :(得分:1)

初始化设置时,您可以提供key_name,然后当您需要检索它时,可以使用get_or_insert方法。如果它不存在,它将创建它,否则它将检索它。

settings_db = StoreSettings.get_or_insert(
    'my_settings',
    name='yourname'
    ....
)

或者,如果您在应用程序启动时创建对象,则可以通过密钥名称

获取该对象

settigns_db = StoreSettings.get_by_id('my_settings')

答案 1 :(得分:0)

保持相同的密钥?每当您在数据存储区中推送实体时,它都需要一个密钥。

如果使用相同的密钥创建第二个对象,则最终会覆盖前一个实体。