当前位置: 首页 > 面试题库 >

为BigQuery Python CLI设置GOOGLE_APPLICATION_CREDENTIALS

冯德宇
2023-03-14
问题内容

我正在尝试使用Python通过BigQuery API连接到Google BigQuery。

我在这里关注此页面:https :
//cloud.google.com/bigquery/bigquery-api-
quickstart

我的代码如下:

import os
import argparse

from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.client import GoogleCredentials

GOOGLE_APPLICATION_CREDENTIALS = './Peepl-cb1dac99bdc0.json'

def main(project_id):
    # Grab the application's default credentials from the environment.
    credentials = GoogleCredentials.get_application_default()
    print(credentials)
    # Construct the service object for interacting with the BigQuery API.
    bigquery_service = build('bigquery', 'v2', credentials=credentials)

    try:
        query_request = bigquery_service.jobs()
        query_data = {
            'query': (
                'SELECT TOP(corpus, 10) as title, '
                'COUNT(*) as unique_words '
                'FROM [publicdata:samples.shakespeare];')
        }

        query_response = query_request.query(
            projectId=project_id,
            body=query_data).execute()

        print('Query Results:')
        for row in query_response['rows']:
            print('\t'.join(field['v'] for field in row['f']))

    except HttpError as err:
        print('Error: {}'.format(err.content))
        raise err


if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

但是,当我通过终端运行此代码时,出现以下错误:

oauth2client.client.ApplicationDefaultCredentialsError: The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.

正如您在代码中看到的那样,我尝试GOOGLE_APPLICATION_CREDENTIALS根据错误中的链接设置。但是,错误仍然存​​在。有人知道这个问题是什么吗?

先感谢您。


问题答案:

首先-感谢您的代码-该代码非常有用。我还建议您直接在代码中添加设置环境变量-而不是为您工作的每个环境都设置它。您可以使用以下代码:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path_to_your_.json_credential_file"

在需要不同凭据的不同项目之间进行切换时,我发现这很有用。



 类似资料:
  • 为Jenkins设置HTTPS的推荐方法是什么? 在Jenkins本身中设置HTTPS 使用Apache作为HTTPS设置的代理 我们有一个VM,其中Jenkins是唯一的应用程序。

  • 我正在使用PushBots向我的Android应用发送推送通知。通过有效负载,我可以设置largeIcon位图和更改标题等,但我不确定如何更改状态栏中出现的通知图标(或smallIcon)。 目前,在Android5.0+上,它只是一个白色的方块,而在这个方块下面,它使用的是发射器图标。 但是,由于我使用的是pushbots,实际上我没有任何使用通知构造函数的通知代码。我在主要活动中所做的就是初始

  • 我正在尝试从Java/Spring软件发送电子邮件。我正在使用spring框架的JavaMailSender。如何将本地计算机配置为JavaMailSender的smtp主机?我可以通过以下命令发送电子邮件: 然而,我怎样才能写我的邮件。支持上述命令的属性? 这是我的javaMailSender bean: 这是mail.properties文件:

  • 问题内容: 所以我决定今天尝试Android Studio的Beta,但它拒绝在我的32位JRE上运行。我可以下载64位JRE,但出于各种原因(我当前的32位Eclipse IDE,Processing IDE和Minecraft不喜欢我的经验),我不希望它成为我的默认JRE,我认为一直切换java_home目录会很麻烦。 那么,intelliJ是否有某种方法可以像在其ini中的eclipse一样

  • 问题内容: 我正在研究RoR,并将此虚拟机设置为“部署” RoR,并且陷入了Node.js的安装过程。 我正在使用Ubuntu 12.04,并且遵循了本指南的这一步骤: http://railsapps.github.com/installing- rails.html 从Rails 3.1开始,在Ubuntu Linux上进行开发需要JavaScript运行时(Mac OS X或Windows则

  • When running an Express app behind a proxy, set (by using app.set()) the application variable trust proxy to one of the values listed in the following table. Although the app will not fail to run if t