1

Python-Freebase モジュールのmqlread()を使用しています。次のクエリを使用します。

query = [{
  "cursor": True,
  "id":     None,
  "type":   "/games/game",
  "mid":    None,
}]

これは 100 エントリを返しますが、結果には「cursor」が含まれていません。クエリを手動で実行すると、次のようになります。

{ "code": "/api/status/ok", "cursor": "eNqFj8FqwzAQRD-mF4sisrtaaaWlhP6H8MHYNTUEW8hpKP36KjgU2kvnMoeZ4THjR923qhKS07wpAvR5VZbYBIL9sE76FDGAs-yCA_FISprL_nWUt5tC383L59ukh9llH_TvpL7Y7rYUdZ4CN9iRITB6vTwnAhriCAwAgXGO8Etkz48dicnvy3ptTGO6OwgsBwIfwJNeHpDWowgh_URO63-M0Z7vM0neGZNL3RrihBKFU_uZS2l3sT-9cpIBaRrnOE8JhaAhQL4B9ZFRmg==", "result": [

{
  "id":   "/en/cities_and_knights_of_catan",
  "mid":  "/m/02hq3",
  "type": "/games/game"
},
....

「カーソル」を含むもの。しかし、結果は次のとおりです。

freebase.mqlread(query, extended=True)

戻ります:

[{u'type': u'/games/game', u'id': u'/en/cities_and_knights_of_catan'}, ...

「コード」と「カーソル」を取り除きます。「カーソル」を取得するにはどうすればよいですか?

4

2 に答える 2

1

Freebase-Python モジュールには、実際にカーソル移動を処理するメソッドが含まれていることがわかりました。mqlreaditer(query, extended=true) を呼び出すだけで、繰り返し処理できる Python ジェネレーターが返されます。舞台裏では、Freebase モジュールがクエリを実行してカーソルを追跡し、「false」カーソルに到達するまでオンデマンドで結果を返します。

とても簡単です!

于 2011-02-04T02:05:09.063 に答える
0

MQL エンベロープ パラメータのサポートは、Freebase Python ライブラリの 1.0.8 リリースで、おそらく偶然に削除されました。

MQL 拡張機能が必要ない場合は、パラメータextended=Trueパラメータを削除して を使用できますmqlreaditer(query)

MQL 拡張機能 (または他のエンベロープ パラメーター) が必要な場合は、誰かが問題を修正して新しいリリースを行うまで、1.0.6 に戻す必要があります。

 sudo easy_install freebase==1.0.6
于 2012-02-03T21:36:13.937 に答える