【问题标题】:Query problem in Google app engine谷歌应用引擎中的查询问题
【发布时间】:2009-10-23 13:38:55
【问题描述】:

我对 sql 和谷歌应用引擎中使用的 GQL 非常陌生。我已设法将我的数据推送到 Google 服务器,但我无法找到一种方法来从我已加载到数据存储的实体中进行查询。

这就是问题所在,除了下面给出的其他列之外,我只想查询由用户 ID 标记的用户联系人的姓名和号码,

Name Number       User_id Country    
Rob  0065114146   654351  singapore
Mark 0065132411   654351  singapore
Tina 0065221916   846611  singapore
Nick 0065214126   846611  singapore

这是我的 Models.py 文件,其中有我的 MyContacts 实体定义,

Class MyContacts(db.Model): 
  Name = db.StringProperty(required=True) 
  Number = db.PhoneNumberProperty(required=True) 
  User_id = db.IntegerProperty(required=True) 
  Country = db.StringProperty()

我将用户 ID 作为 UI 的输入,但我无法找到一种使用查询来显示数据的方法。请如果有人可以帮助我在 GQL 中创建查询,那对我来说将是一个很大的帮助。 我已经尝试了各种类似SELECT * FROM MyContacts WHERE __key__ = KEY('user_id',654351) 但我什么也没得到。

请帮帮我。

【问题讨论】:

  • 这将有助于查看您的模型定义。
  • 是的,我们确实需要查看您的模型以便 MyContacts 说出任何有用的信息。
  • 这是我的 Models.py 文件,我的 MyContacts 实体类 MyContacts(db.Model): Name = db.StringProperty(required=True) Number = db.PhoneNumberProperty(required=True ) User_id = db.IntegerProperty(required=True) Country = db.StringProperty()

标签: google-app-engine google-cloud-datastore gqlquery


【解决方案1】:

由于 User_id 是 IntegerProperty,所​​以需要这样查询:

db.GqlQuery("SELECT * FROM MyContacts WHERE User_id = :1", some_int)

或等效地使用查询:

MyContacts.all().filter('User_id =', some_int)

请注意,如果“User_id”取自用户 API 用户对象,则不应将其转换为 int - 它不能保证适合 64 位,因此您应该将其存储为字符串或用户属性。

【讨论】:

  • 有没有办法只检索“姓名”和“号码”两列而不是所有列,因为我只想在 UI 上显示姓名和他的号码,这样我就可以得到更快的响应。
  • 否 - 实体总是作为一个整体返回。您可以将非规范化为单独的表,但对于像这样小的模型来说,确实没有必要。
猜你喜欢
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多