問題タブ [gqlquery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3316 参照

python - GqlQuery の結果セットを Python 辞書に変換する

このようなモデルがあるとしましょう

そして、私はこのようなGqlQueryに行きます

GqlQuery の結果を取得して、さまざまな言語から操作できる何らかの JSON 文字列に変換したいと考えています。


これが私が今やっている方法です

  1. 辞書に変換するメソッドをFooクラスに追加します

    /li>
  2. GqlQuery の結果をループし、各 Foo インスタンスを辞書に手動で追加します

    /li>

上記の私のアプローチはうまくいきますが、ちょっと気持ち悪いです。

これを処理するための、よりクリーンで「Pythonic」な方法はありますか?

最後の形式は、上で行ったものとまったく同じである必要はありません。JSONにうまく変換できるものでなければならないので、Javascript/PHPなどから処理できます。

0 投票する
9 に答える
24929 参照

google-app-engine - GQL で結果をカウントする最良の方法は何ですか?

カウントを行う1つの方法は次のようなものだと思います:

私が気に入らないのは、カウントが最大 1000 に制限され、クエリがおそらく遅くなることです。回避策がある人はいますか?1つ考えていますが、きれいに感じません。GQL だけに本当の COUNT 関数があれば...

0 投票する
1 に答える
2899 参照

google-app-engine - エンティティの子に対する Google App Engine クエリ (フィルタではない)

クエリでエンティティの子を使用できますか?

与えられた:

500 の工場が 500 個の製品を製造し、合計 250,000 個の製品があるとします。特定の 1 つの工場で製造された 500 個の製品だけを返すリソース効率の高いクエリを作成する方法はありますか? 祖先メソッドはフィルターであるため、たとえば Product.all().ancestor(factory_1) を使用すると、データストアを繰り返し呼び出す必要があります。

0 投票する
2 に答える
1718 参照

google-app-engine - Google App Engine でインターネット ハイスコアを実装する方法

ゲームにインターネットのハイスコアを実装したいと考えています。そして、プレイヤーにフィードバックを提供します (トップ 100 などだけではありません)。通常の SQL では、次のようになります。

SELECT COUNT(*) FROM Scores WHERE points > :newUsersPoints

とGQLには似たようなものがあります

db.GqlQuery("SELECT * FROM Score WHERE points > :1", newUsersPoints).count()

しかし、count() は 1000 に制限されているため、私の場合はあまり役に立ちません。これを実装する方法についてのアイデアはありますか?

私は2つを持っています

初め:

  1. シャーディング カウンターのアイデアを使用する ( http://code.google.com/intl/pl/appengine/articles/sharding_counters.html ) ある範囲 (from_points、to_points) 内にいくつのスコアがあるかを格納する新しい「テーブル」を作成します。

  2. range.to_points < newUsersPoints である上記の表のすべてのカウンターを合計します

  3. 新しいスコアが db.GqlQuery("SELECT * FROM Score WHERE points > :1 AND points >= :2 AND points < :3", newUsersPoints, range.from_points, range. to_points).count() + sumfrom2

  4. 新しいスコアが含まれる範囲を見つけ、そのカウンターをインクリメントします

  5. 3. カウンターが 1000 (または 999) より大きい範囲を分割して、限界に達しないようにします。

  6. 新しいスコアをスコア テーブルに追加する

これは非常に複雑で、エラーが発生しやすいものです。スコアを追加する前に、範囲とタイムアウトをインクリメントする場合があります。(非トランザクション)

2番目のアイデア:

時々 (毎日 1 回?) すべてのスコアをポイントで並べ替え、新しい位置を与えます (スクリプトはタイムアウトする可能性があるため、チャンクで実行する必要があります)。

新しいスコアがどの場所にあるかを調べるには、次のことを行います

db.GqlQuery("SELECT * FROM Score WHERE points > :1 LIMIT 1", newUsersPoints).get().precalculated_position + 1

他のアイデアはありますか?

0 投票する
2 に答える
2664 参照

google-app-engine - GQL は、一般的に利用可能な SQL スタイルの集計をサポートしていますか?

私が探しているのは、SQL のバージョンで広く利用できる単純な集計関数です。

シンプルなものSelect Count(*) from table1はより複雑なものが好きです。

これらが利用可能な場合、私に指摘できるドキュメントはありますか?

ありがとう - ギギー

0 投票する
3 に答える
2235 参照

google-app-engine - Google App Engine のクエリと日時に関するヘルプ

次のデータを使用します。

各「名前」の最新の行のみを取得するようにクエリを絞り込むにはどうすればよいですか? たとえば、私は次のようになりたいだけです。

そして、すべての結果に 1 分以内の日付値が含まれるようにします。日付値は Python の datetime プロパティであることに注意してください。

ありがとう

0 投票する
2 に答える
668 参照

python - キーの GET パラメータに対して GQL が機能しない

Python で GQL の結果をフィルター処理するキーを比較しようとしていますが、int への直接比較も型キャストも機能しません。したがって、以下のコメントされていない行に記載されているように、回避策を講じることを余儀なくされています。手がかりはありますか?

EDIT1- レコードを取得しないもう 1 回の試行。キーはレコードと共にデータストアに存在します mydbobject = DbModel.gql("WHERE key = KEY('%s')"%row).fetch(1)

0 投票する
2 に答える
7364 参照

google-app-engine - GQLで過去6時間(日時)のすべてのエントリを照会する方法は?

Google App Engine に日付フィールドを持つ単純なテーブルがあります。現在から 6 時間前までの日付フィールドを含むすべての行をクエリしたいと考えています。このクエリを作成するにはどうすればよいですか?

0 投票する
3 に答える
2566 参照

python - GAE - Python でデータストアを編集/更新する方法

私はこのデータストアモデルを持っています

taskname の値を編集するにはどうすればよいですか? task1 があり、それを task1-project に変更したいとします。