gql не работает для получения параметров для ключей - PullRequest
0 голосов
/ 09 июня 2009

Я пытаюсь сравнить ключ для фильтрации результатов в gql в python, но прямое сравнение или приведение типов к int работает. Поэтому я вынужден обходить стороной, как указано в комментариях ниже. Любые подсказки.

row = self.request.get("selectedrow")
#mydbobject = DbModel.gql("WHERE key=:1", row).fetch(1)
#mydbobject = DbModel.gql("WHERE key=:1", int(row)).fetch(1)#invalid literal for int()   with base 10
#print mydbobject,row

que = db.Query(DbModel)
results = que.fetch(100)
mydbobject = None
for item in results:
if item.key().__str__() in row:
    mydbobject = item

EDIT1 - еще одна попытка, которая не возвращает запись, ключ существует в хранилище данных вместе с записью mydbobject = DbModel.gql ("WHERE key = KEY ('% s')"% строка) .fetch (1)

Ответы [ 2 ]

1 голос
/ 09 июня 2009

Правильно ли я полагаю, что вы просто хотите получить объект с определенным ключом? Если да, то методы get и get_by_id могут помочь:

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))
0 голосов
/ 10 июня 2009

Ошибка «недопустимый литерал для int ()» указывает на то, что передача параметра в int не была строкой, представляющей целое число. Попробуйте вывести значение «строка» для отладки, я уверен, что это пустая строка.

Правильный способ извлечь элемент из ключа - это просто использовать метод «get» или «get_by_id». В вашем случае:

row = self.request.get("selectedrow")
mydbobject = DbModel.get(row)
...