如何在使用Freebase API时从mqlread()获取游标?

时间:2011-01-29 04:22:11

标签: python json freebase mql

我正在使用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'}, ...

除去“代码”和“光标”。我怎样才能获得“光标”?

2 个答案:

答案 0 :(得分:1)

我发现Freebase-Python模块实际上包含一个为您处理光标的方法。只需调用mqlreaditer(query,extended = true),这将返回一个可以迭代的Python生成器。在幕后,Freebase模块将查询并跟踪光标,按需返回结果,直到达到“假”光标。

很简单!

答案 1 :(得分:0)

在Freebase Python库的1.0.8版本中,MQL包络参数的支持可能被意外删除。

如果不是不需要MQL扩展,您只需删除参数extended=True参数并使用mqlreaditer(query)

如果您需要MQL扩展(或其他信封参数),您必须回退到1.0.6,直到某人修复问题并执行新版本。

 sudo easy_install freebase==1.0.6