GQL不适用于GET参数的键
我正在尝试在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")))