python'Resource'对象中的Freebase API没有属性'mqlread'

时间:2013-10-17 18:16:40

标签: python freebase google-api-python-client

我有一个脚本来读取Freebase数据,但它突然停止工作。它输出以下错误:

AttributeError: 'Resource' object has no attribute 'mqlread'

所以我尝试了Google documentation

中的示例代码
from apiclient import discovery
from apiclient import model
import json

DEVELOPER_KEY = 'my_key'

model.JsonModel.alt_param = ""
freebase = discovery.build('freebase', 'v1', developerKey=DEVELOPER_KEY)
query = [{'id': None, 'name': None, 'type': '/film/film'}]

def do_query(cursor=""):

    response = json.loads(freebase.mqlread(query=json.dumps(query), cursor=cursor).execute())
    for item in response['result']:
        print item['name']

    return response.get("cursor")

cursor = do_query()
while(cursor):
    cursor = do_query(cursor)

我得到同样的错误...... mqlread方法已经消失了,当我做dir(freebase)时,我得到了这个:

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_add_basic_methods', '_add_nested_resources', '_add_next_methods', '_baseUrl', '_developerKey', '_dynamic_attrs', '_http', '_model', '_requestBuilder', '_resourceDesc', '_rootDesc', '_schema', '_set_dynamic_attr', '_set_service_methods', u'reconcile', u'search', u'search_media']

他们是否在新版API客户端中删除了此功能?我正在使用google-api-python-client的1.2版本

2 个答案:

答案 0 :(得分:3)

很抱歉。这是一个临时问题,无法从Google API Discovery服务中看到mqlread服务。 API本身仍可从https://www.googleapis.com/freebase/v1/mqlread访问,但Google客户端库依赖于发现服务来公开mqlread作为方法。我们的工程团队正在努力修复,并且应该很快推出一些东西。我会在他们做的时候更新。

答案 1 :(得分:0)

似乎与mql相关的API是旧的API,并且得不到Google的良好支持。所以我建议你使用freebase.search()代替,它可以完成freebase.mqlread()几乎可以做的所有事情。