0

我正在尝试在 Python 中比较 GQL 中过滤结果的关键,但直接比较或类型转换为 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')"%row).fetch(1)

4

2 回答 2

1

我的假设是否正确,您基本上只是想检索具有特定键的对象?如果是这样,get 和 get_by_id 方法可能会有所帮助:

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))
于 2009-06-09T19:58:55.787 回答
0

错误“int() 的文字无效”表明传递给 int 的参数不是表示整数的字符串。尝试打印“row”的值进行调试,我敢打赌它是一个空字符串。

从键中检索元素的正确方法是使用“get”或“get_by_id”方法。在你的情况下:

row = self.request.get("selectedrow")
mydbobject = DbModel.get(row)
于 2009-06-09T20:34:56.930 回答