You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PyCharm用Python查询Google BigQuery出现CERTIFICATE_VERIFY_FAILED错误

错误原因排查

你的报错核心由两个问题共同导致:

  1. 代码层面的凭证传递逻辑有误,虽然你设置了服务账号路径的环境变量,但没有完成凭证实例化,也没有主动将凭证传递给BigQuery客户端
  2. 网络层面的SSL证书校验失败:你的Windows网络环境(通常是企业内网的防火墙/代理做了SSL流量拦截)在请求链路中插入了自签名证书,谷歌云Python SDK默认的可信CA证书库无法识别该证书,导致请求被拦截超时
修复步骤
  • 第一步:修正代码中的凭证逻辑,完整可运行的参考代码如下:
import os
from google.cloud import bigquery
from google.oauth2 import service_account

# 配置环境变量
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "C:\\Users\\username\\Documents\\Code\\Creds\\creds.json"
# 若企业内网需要走代理,取消注释下面两行替换为实际代理地址
# os.environ['HTTP_PROXY'] = "http://<代理地址>:<端口>"
# os.environ['HTTPS_PROXY'] = "http://<代理地址>:<端口>"
# 临时调试用关闭SSL校验(生产环境禁止使用)
# os.environ['CURL_CA_BUNDLE'] = ""
# os.environ['REQUESTS_CA_BUNDLE'] = ""
# 安全方案:导入企业自签根证书路径,替换为你实际的证书路径
# os.environ['REQUESTS_CA_BUNDLE'] = "C:\\certs\\company_root.pem"
# os.environ['SSL_CERT_FILE'] = "C:\\certs\\company_root.pem"

# 实例化服务账号凭证
credentials = service_account.Credentials.from_service_account_file(
    os.environ['GOOGLE_APPLICATION_CREDENTIALS']
)
location = 'asia-southeast1'
# 初始化BigQuery客户端,显式传入凭证、项目ID、区域,避免自动识别错误
client = bigquery.Client(
    credentials=credentials,
    project="<替换为你的GCP项目实际ID>",
    location=location
)

sql_script = '''
SELECT *
FROM `<project-name>.<dataset-name>.<table-name>`
LIMIT 100
'''

# 执行查询并导出
df = client.query(sql_script).to_dataframe()
df.to_csv('table_schema_extract.csv', index=False, encoding='utf_8_sig')
  • 第二步:修复SSL校验问题,二选一即可:
    1. 本地临时调试:直接取消代码中关闭SSL校验的两行注释,即可快速验证逻辑是否通顺
    2. 长期安全使用:找企业IT部门获取内网的自签根证书,导出为PEM格式后存到本地,取消代码中对应证书路径配置的注释,替换为实际的证书路径
  • 第三步:升级依赖包,避免旧版本SDK的已知bug,在PyCharm终端执行以下命令:
    pip install --upgrade google-cloud-bigquery google-auth google-api-core

注意:如果你的服务账号没有对应BigQuery表的查询权限,修复上述问题后会出现权限报错,给对应服务账号授予BigQuery Data Viewer和BigQuery Job User权限即可

内容的提问来源于stack exchange,提问作者Suvrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 18:30:05