我有一个表,其中一列包含一个列表。我想知道是否可以选择列表中包含特定元素的所有行。
更具体地说,我有一个包含字符串列表的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)
因此,我有以下问题:
我正在使用带有Python 2.7的Google App Engine。谢谢!
答案 0 :(得分:2)
您误解了IN
运营商的用途。它不是用于查询重复字段:您只需使用正常=
即可。 IN
用于查询值列表:例如guest IN [1, 2, 3, 4]
。您的查询应该是:
q = TableName.gql('WHERE guests = :g', g=guest)
或更好,因为GQL没有为您提供标准数据库语法所没有的任何内容:
q = TableName.all().filter('guests =', guest)