【发布时间】:2021-03-27 07:37:55
【问题描述】:
我在本地系统中设置了 gcloud,我正在使用 python3.7 在位于 projectA 的大查询数据集中插入记录。所以我从 命令行客户端 尝试,项目设置为 projectA。我给出的第一个命令是获得身份验证
gcloud auth login
然后我使用python3并进入python模式
然后我给出以下命令
from googleapiclient.discovery import build
from google.cloud import bigquery
import json
body={json input} //pass the json string here
bigquery = build('bigquery', 'v2', cache_discovery=False)
bigquery.tabledata().insertAll(projectId="projectA",datasetId="compute_reports",tableId="compute_snapshot",body=body).execute()
我得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googleapiclient/http.py", line 915, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://bigquery.googleapis.com/bigquery/v2/projects/projectA/datasets/compute_reports/tables/compute_snapshot/insertAll?alt=json returned "Access Denied: Table projectA:compute_reports.compute_snapshot: User does not have bigquery.tables.updateData permission for table projectA:compute_reports.compute_snapshot."
我以具有 role/Owner 和 BigQueryDataOwner 权限的用户身份执行它,并且还将 DataEditor 添加到数据集,该数据集具有这些权限,包括 bigquery.tables.update bigquery.datasets.update
我仍然收到此错误。
我不明白为什么我的凭据仍然无法在大查询中执行插入,有人可以帮忙吗?谢谢
【问题讨论】:
-
执行
gcloud auth application-default login并重试。更好? -
请给用户/服务帐号添加“bigquery.tables.updateData”权限后再试一试?
-
两个选项都试过了,但还是有错误
标签: python-3.x google-cloud-platform google-bigquery python-requests google-api-python-client