我试图比较在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)
答案 0 :(得分:1)
我是否认为您基本上只是想要检索具有特定键的对象?如果是这样,get and get_by_id methods可能会有所帮助:
mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))
答案 1 :(得分:0)
错误“int()的无效文字”表示传递给int的参数不是表示整数的字符串。尝试打印“row”的值进行debuging,我打赌它是一个空字符串。
从密钥中检索元素的正确方法是使用方法“get”或“get_by_id”。 在你的情况下:
row = self.request.get("selectedrow")
mydbobject = DbModel.get(row)