首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BigQuery Python问题

BigQuery Python问题
EN

Stack Overflow用户
提问于 2017-10-08 02:22:24
回答 3查看 675关注 0票数 2

今天,我一整天都在尝试为我的一个新项目设置python。我经历了整个过程

  1. 创建新项目
  2. 为项目启用账单
  3. 启用BigQuery API
  4. 创建连接到BigQuery API的服务帐户

我试过最简单的例子

代码语言:javascript
复制
import os
from google.cloud import bigquery

def main():
    # [START bigquery_quickstart]
    # Imports the Google Cloud client library

    # Instantiates a client
    creds = "absolute-path-to-file.json"
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = creds
    print(creds)
    bigquery_client = bigquery.Client().from_service_account_json(creds)

    # The name for the new dataset
    dataset_name = 'my_new_dataset'

    # Prepares the new dataset
    dataset = bigquery_client.dataset(dataset_name)

    # Creates the new dataset
    dataset.create()

    print('Dataset {} created.'.format(dataset.name))
# [END bigquery_quickstart]
if __name__ == '__main__':
    main()

并得到以下错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "prepare-upload.py", line 121, in <module>
    main()
  File "prepare-upload.py", line 116, in main
    dataset.create()
  File "//anaconda/envs/tpot/lib/python3.5/site-packages/google/cloud/bigquery/dataset.py", line 431, in create
    method='POST', path=path, data=self._build_resource())
  File "//anaconda/envs/tpot/lib/python3.5/site-packages/google/cloud/_http.py", line 293, in api_request
    raise exceptions.from_http_response(response)
google.cloud.exceptions.Forbidden: 403 POST https://www.googleapis.com/bigquery/v2/projects/kobas-public-datasets-182301/datasets: Access Not Configured. BigQuery API has not been used in project 203593156286 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/bigquery.googleapis.com/overview?project=203593156286 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

API是启用的,我不知道问题是什么。令我困惑的是,我为我的另外两个项目做了同样的过程,而且它起了作用。再观察一次。这个错误建议转到

https://console.developers.google.com/apis/api/bigquery.googleapis.com/overview?project=203593156286

然而,这种联系是过时的,而应该是

https://console.developers.google.com/apis/api/bigquery-json.googleapis.com/overview?project=203593156286

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2017-10-10 11:47:32

试试这样的mb,它会有帮助的(我在Pyhton2.7中用它作为auth ):

代码语言:javascript
复制
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/path_to_key/xxx.json"

credentials = GoogleCredentials.get_application_default()

bigquery_service = build('bigquery', 'v2', credentials=credentials)

而且,我在您的代码中没有看到your_project_id的任何定义。例如,对于我使用的查询:

代码语言:javascript
复制
query_response = query_request.query(
        projectId=your_project_id,
        body=query_data).execute()
票数 1
EN

Stack Overflow用户

发布于 2017-12-29 09:55:29

在您正在执行Python代码的机器中,是否启用了“对Cloud的访问”?

在创建VM时,可以更改它:

票数 1
EN

Stack Overflow用户

发布于 2020-04-12 07:49:35

只要您有GOOGLE_APPLICATION_CREDENTIALS环境变量,就可以使用以下代码初始化客户端:

代码语言:javascript
复制
from google.cloud import bigquery
client = bigquery.Client()

还要确保服务帐户有足够的访问您的项目。因此,在任何情况下,假设您有多个项目,并且希望使用服务帐户访问每个项目,那么您应该:

  1. 确保您的服务帐户对您的项目具有多个访问权限。
  2. 为每个项目创建不同的服务帐户
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46626964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档