2010-03-21 37 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。這樣做會大大加快,比如說,將模型包含代碼和名稱作爲字段。