我有一个脚本来读取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版本
答案 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()几乎可以做的所有事情。