Как получить курсор из mqlread () при использовании Freebase API? - PullRequest
1 голос
/ 29 января 2011

Я использую модуль Python-Freebase mqlread () .Используя следующий запрос:

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

Возвращает 100 записей, но результат не включает «курсор».Если вы запустите запрос вручную, вы получите что-то вроде:

{ "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'}, ...

, который удаляет "код" и "курсор"Как я могу получить «курсор»?

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Я обнаружил, что модуль Freebase-Python на самом деле включает метод, который позаботится о курсировании для вас. Просто вызовите mqlreaditer (query, extended = true), и он вернет генератор Python, через который вы можете перебирать. За кулисами модуль Freebase будет запрашивать и отслеживать курсор, возвращать результаты по запросу, пока не будет достигнут «ложный» курсор.

Очень просто!

0 голосов
/ 04 февраля 2012

Поддержка параметров конверта MQL, предположительно случайно, была прекращена в версии 1.0.8 библиотеки Freebase Python.

Если вам не нужны расширения MQL, вы можете просто удалить параметр extended=Trueпараметр и используйте mqlreaditer(query).

Если вам нужны расширения MQL (или другие параметры конверта), вам придется вернуться к 1.0.6, пока кто-нибудь не решит проблему и не выпустит новый выпуск.

 sudo easy_install freebase==1.0.6
...