GQL不适用于GET参数的键

0 投票
2 回答
683 浏览
提问于 2025-04-15 12:08

我正在尝试在Python中使用GQL来比较关键字,以过滤结果,但直接比较或者将其转换为整数都不行。因此,我不得不按照下面未注释的行所提到的方法来解决这个问题。有没有什么线索?

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

编辑1 - 这是另一个尝试,但没有检索到记录,尽管这个关键字在数据存储中确实存在,并且有相关的记录。

mydbobject = DbModel.gql("WHERE key = KEY('%s')"%row).fetch(1)

2 个回答

0

这个错误“invalid literal for int()”的意思是你传给int()的参数不是一个表示整数的字符串。你可以试着打印一下“row”的值来调试,我敢打赌它是一个空字符串。

正确获取键值的方法是使用“get”或者“get_by_id”这个方法。在你的情况下:

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

我理解得对吗?你基本上是想获取一个特定键的对象,对吧?如果是这样的话,get 和 get_by_id 方法 可能会对你有帮助:

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))

撰写回答