Python - читать с ключом в App Engine - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть программа на Python в Google App Engine

Когда я могу найти объект в хранилище данных, когда у меня есть ключ в виде строки, как я могу выполнить прямое чтение. Ниже мой код, который выполняет цикл, не хорошо .....

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 Ответ

4 голосов
/ 02 ноября 2011

Вы можете создать экземпляр db.Key из строки, передав его непосредственно конструктору:

opportunity_key = db.Key(BnPresets.recordkey)

Получив это, просто db.get, чтобы получить сущность, идентифицированную этим ключом:

opportunity = db.get(opportunity_key)

Я полагаю (глядя на запрос, который вы используете), что вы также хотите проверить имя пользователя объекта, который вы получили:

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

Так и должно быть. Суть в том, что вы должны сначала использовать ключ - так как он однозначно идентифицирует вашу сущность - вместо того, чтобы запрашивать какое-то другое свойство и перебирать результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...