0

我有一个表,其中一列包含一个列表。我想知道是否可以选择列表包含特定元素的所有行。

更具体地说,我有一guests列包含一个字符串列表,我想知道一个特定的guest字符串是否是这个列表的一部分。我想写一个这样的查询:

q = TableName.gql('WHERE :g IN guests', g=guest)

但是,似乎我不能将变量放在这个位置。例如,这个查询(其中 ownerid 是一个字符串而不是一个字符串列表)也是不允许的:

q = TableName.gql('WHERE :g = ownerid', g=guest)

我似乎必须这样写:

q = TableName.gql('WHERE ownerid = :g', g=guest)

因此,我有以下问题:

  1. 如何构造一个查询来获取列表单元格包含特定成员的行?
  2. GQL 查询的参数是否限制在运算符的右侧?有什么限制?

我正在使用带有 Python 2.7 的 Google App Engine。谢谢!

4

1 回答 1

2

您误解了IN运营商的用途。它不适用于查询重复字段:您只需使用普通字段即可=IN用于查询列表:例如guest IN [1, 2, 3, 4]。您的查询应该是:

q = TableName.gql('WHERE guests = :g', g=guest)

或者更好,因为 GQL 没有为您提供标准 DB 语法没有的任何内容:

q = TableName.all().filter('guests =', guest)
于 2013-08-16T16:44:37.413 回答