2010-03-21 38 views
0

我有一个countrycodes表,最好的方式来存储这些2位数字代码,只是在一个普通的属性或key_name属性?key_name中的谷歌应用引擎国家代码

我以为使用key_name会产生更快的性能?

吨。

+0

“注意:返回键的查询比返回实体的查询更快,成本更低,因为键本身已经在索引中,所以查询不需要获取实际的实体。查询结果中的键 - 例如,如果您只是要删除结果 - 请考虑使用仅键的查询。“ - http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Queries_on_Keys – Jasper 2010-03-21 23:01:04

回答

0

是否要使用key_name取决于您要如何使用它。我不完全确定你想如何使用这些国家代码的基础上你的问题中的信息。但是,假设您希望能够根据双字母代码查询国家的全名,例如从“我们”中获取“美国”。在这种情况下,您可以拥有一个这样的实体:

class CountryName(db.Model): 
    name = db.StringProperty() 

    @classmethod 
    def lookup_by_code(cls, code): 
     country_name = "" 
     country = cls.get_by_key_name(code) 
     if country is not None: 
      country_name = country.name 

     return country_name 

现在,这段代码并不完整;你需要用数据填充模型,这种方法不允许反向查找 - 当你有国家名称时获取代码,但是这应该让你了解如何使用key_names。这样做会大大加快,比如说,将模型包含代码和名称作为字段。