如何使用 Python 与 BigQuery 建立连接

Posted

技术标签:

【中文标题】如何使用 Python 与 BigQuery 建立连接【英文标题】:How to make connection with BigQuery using Python 【发布时间】:2017-04-12 08:51:43 【问题描述】:

我是 python 新手,我用过这段代码

from google.cloud import bigquery
from google.cloud.bigquery import  SchemaField


client = bigquery.Client(project='xxxxxxxxxxxxx')

我收到了这个错误

C:\Python27\python.exe "C:/Users/Vikas Chauhan/python_programs/bigQuery.py"
Traceback (most recent call last):
  File "C:/Users/Vikas Chauhan/python_programs/bigQuery.py", line 5, in <module>
    client = bigquery.Client(project='stellar-display-145814')
  File "C:\Python27\lib\site-packages\google\cloud\bigquery\client.py", line 83, in __init__
    project=project, credentials=credentials, _http=_http)
  File "C:\Python27\lib\site-packages\google\cloud\client.py", line 212, in __init__
    Client.__init__(self, credentials=credentials, _http=_http)
  File "C:\Python27\lib\site-packages\google\cloud\client.py", line 128, in __init__
    credentials = get_credentials()
  File "C:\Python27\lib\site-packages\google\cloud\credentials.py", line 39, in get_credentials
    credentials, _ = google.auth.default()
  File "C:\Python27\lib\site-packages\google\auth\_default.py", line 282, in default
    raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
explicitly create credential and re-run the application. For more
information, please see
https://developers.google.com/accounts/docs/application-default-credentials.

我已经设置了环境变量。我一次又一次地收到这个错误。

我是 python 新手,所以请帮我解决这个问题。我对此一无所知,即使用 python 与 bigquery 建立联系。 谢谢

【问题讨论】:

【参考方案1】:

首先,您需要一个google-api-client 的python 包。您可以使用 pip 安装它

pip install --upgrade google-api-python-client

然后设置指向您的服务帐户凭据的环境变量。如果您没有服务帐户,请创建一个新的服务帐户并将 json 凭据下载到您的本地。

GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json

现在一切都设置好了,写一段python代码就行了,

from apiclient import discovery
from oauth2client.client import GoogleCredentials

credentials = GoogleCredentials.get_application_default()
bq_client = discovery.build('bigquery', 'v2', credentials=credentials)

探索 BigQuery API 和 Google API Explorer。

【讨论】:

谢谢它的工作。但是有什么方法可以使用 Oauth url 进行连接。

以上是关于如何使用 Python 与 BigQuery 建立连接的主要内容,如果未能解决你的问题,请参考以下文章

将 BigQuery SQL 与内置 Python 函数结合使用

如何使用 Python BigQuery API 追加到 BigQuery 中的表

如何使用 Python + 服务帐户创建 BigQuery 数据传输?

如何使用 python 自动生成 bigquery 模式?

如何使用 python 将字典写入 Dataflow 中的 Bigquery

如何使用 Python 将 bigquery 返回的结果转换为 Json 格式?