根据google appengine中的__key __(唯一标识符)进行选择

bob*_*obo 1 python google-app-engine

我有了


""" A site message """
class Message( db.Model ) :
  # from/to/ a few other fields
  subject = db.StringProperty()
  body = db.Text()

  sent = db.DateTimeProperty( auto_now_add=True )

现在我试图通过它的KEY选择一条消息.我之前保存了密钥,并以HTML格式将其植入.结果是一个类似的可点击链接

<a href="/readmessage?key=aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw">click to open</a>

那么我运行这个GQL查询:

gql = """select * from Message where __key__='aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw'"""

但它不起作用,因为

BadFilterError:BadFilterError:无效过滤器:__ key__过滤器值必须是Key; 收到了aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw(一个str).

我在这里完全遗漏了一些东西,那就是你如何将一个对象放入一个GQL查询字符串..而且没有Gql解析器抱怨它是一个字符串?

Ale*_*lli 6

不要使用GQL来进行基于密钥的检索 - 从字符串中创建一个关键对象:

k = db.Key('aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw')
Run Code Online (Sandbox Code Playgroud)

只是db.get(k).如果你坚持使用GQL,那么k- 一个适当构造的实例db.Key,而不是一个字符串对象! - ) - 也是你需要替换到GQL查询(by :1或whatrever).