无需凭据文件直接传入凭证构造Google BigQuery Client的方法问询
报错原因
- 你安装的
google-cloud-bigquery版本低于2.21.0,旧版本的Client类未提供from_service_account_info类方法 - 该方法要求传入的是解析后的JSON字典对象,你当前直接传入凭据字符串的用法不符合参数要求
解决方案
方案1:使用from_service_account_info(需2.21.0及以上版本)
首先升级SDK到对应版本:
pip install --upgrade google-cloud-bigquery>=2.21.0
修改代码,把凭据字符串转为字典后再传入:
import json from google.cloud import bigquery creds_str = get_creds_as_string() # 返回字符串格式的凭据内容 creds_dict = json.loads(creds_str) client = bigquery.Client.from_service_account_info(creds_dict)
方案2:兼容旧版本的通用构造方式
如果不方便升级SDK,可以手动构造凭据对象再传入Client构造函数:
import json from google.cloud import bigquery from google.oauth2 import service_account creds_str = get_creds_as_string() creds_dict = json.loads(creds_str) credentials = service_account.Credentials.from_service_account_info(creds_dict) # 若需要指定项目ID,也可以在构造Client时传入project参数 client = bigquery.Client(credentials=credentials, project=creds_dict["project_id"])
内容的提问来源于stack exchange,提问作者CutePoison
相关产品推荐
相关产品推荐

