【发布时间】:2018-10-29 09:36:31
【问题描述】:
我们正在尝试为我们的 Google BigQuery 用户设置权限。
此代码在 Jupyter 笔记本中运行时有效,但未在 App 引擎中运行。
from google.cloud import bigquery
client = bigquery.Client.from_service_account_json(credentials, project=project)
dataset = client.get_dataset(client.dataset(dataset_name))
代码给出了这个错误:
“客户端”对象没有属性“get_dataset”
我们认为这是因为 App Engine 可能使用的是旧版本的 BigQuery,它没有该方法 - 但是当我们添加以下行时...
print "Version: ", bigquery.__version__
...,显示的版本是 0.30,据我们了解,它应该支持 get_dataset 方法。
我们缺少什么?什么可能导致我们的“客户端”对象没有属性“get_dataset”错误?
附录:我们从 dir(client) 看到的方法是:
> ['SCOPE', '_SET_PROJECT', '__class__', '__delattr__', '__dict__',
> '__doc__', '__format__', '__getattribute__', '__getstate__',
> '__hash__', '__init__', '__module__', '__new__', '__reduce__',
> '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
> '__subclasshook__', '__weakref__', '_connection', '_credentials',
> '_determine_default', '_http', '_http_internal', 'copy_table',
> 'dataset', 'extract_table_to_storage', 'from_service_account_json',
> 'job_from_resource', 'list_datasets', 'list_jobs', 'list_projects',
> 'load_table_from_storage', 'project', 'run_async_query',
> 'run_sync_query']
【问题讨论】:
-
它实际上有哪些方法?您可以使用
dir(client)来查看它们。 -
如果你打印
client.dataset(dataset_name),它是什么?我想知道你是否已经有了数据集信息,所以你不需要打电话给client.get_dataset这样的东西。
标签: python-2.7 google-app-engine google-bigquery