Python - 在App Engine中使用密钥读取

时间:2011-11-02 09:16:20

标签: google-app-engine

我在Google App Engine中有一个python程序

当我将密钥作为字符串时,在数据存储区中查找对象时,如何进行直接读取。下面是我执行循环的代码,不是很好.....

class Opportunity(db.Model):
    customer = db.ReferenceProperty(Customer,collection_name='opportunitys')
    BNusername = db.StringProperty()
    opportunity_no = db.StringProperty()
    # etc etc etc.....

#BnPresets holds the object key as a string 

opportunitys = Opportunity.all()
opportunitys.filter('BNusername =',BnPresets.myusername)
for oprec in opportunitys:
    if str(oprec.key()) == BnPresets.recordkey:
         opportunity = oprec
         # I have the object here and can process etc etc

1 个答案:

答案 0 :(得分:4)

您可以通过将db.Key直接传递给构造函数来实例化opportunity_key = db.Key(BnPresets.recordkey)

db.get

完成后,只需opportunity = db.get(opportunity_key) 即可获得此密钥标识的实体:

if opportunity.BNusername == BnPresets.myusername
    process_opportunity(opportunity)

我猜(通过查看您使用的查询)您还想验证您所拥有的对象的用户名:

{{1}}

那应该是它。最重要的是,您应首先使用密钥 - 因为它唯一标识您的实体 - 而不是查询其他属性并迭代结果。