0

列の 1 つにリストが含まれているテーブルがあります。リストに特定の要素が含まれるすべての行を選択できるかどうかを知りたいです。

より具体的には、文字列のリストを含む列があり、特定の文字列がこのリストの一部である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 に答える