Skip to main content
 首页 » 编程设计

python之在 google appengine 中基于 __key__ (唯一标识符)进行选择

2025年05月04日27java哥

我又来了

 
 
""" 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 来挑选一条消息。我之前保存了 key 并将其植入 HTML 表单中。结果是一个看起来像这样的可点击链接

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

然后我运行这个 GQL 查询:

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

但它不起作用,因为

BadFilterError: BadFilterError: invalid filter: __key__ filter value must be a Key; received aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw (a str).

我在这里完全遗漏了一些东西,那就是您如何将对象放入GQL 查询字符串中.. 而不是让Gql 解析器提示它是一个字符串?

请您参考如下方法:

不要为基于键的检索而使用 GQL——从字符串中创建一个键对象:

k = db.Key('aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw') 

还有db.get(k)。如果您坚持使用 GQL,顺便说一句,k -- db.Key 的适当构造实例,不是 字符串对象!-) - - 也是您需要替换到 GQL 查询中的内容(通过 :1 或其他)。