如何在使用 Python (PyCharm) 查询 Google Big Query 时修复 CERTIFICATE_VERIFY_FAILED 错误
Posted
技术标签:
【中文标题】如何在使用 Python (PyCharm) 查询 Google Big Query 时修复 CERTIFICATE_VERIFY_FAILED 错误【英文标题】:How to fix CERTIFICATE_VERIFY_FAILED error while querying Google Big Query using Python (PyCharm) 【发布时间】:2021-07-19 06:29:55 【问题描述】:我对 Python 和 Google Cloud Platform 还很陌生。 我有一个用例在 BigQuery 平台上执行 SQL 命令,然后将查询的输出放在文件中。我正在使用 PyCharm IDE 在 Windows 10 笔记本电脑上运行 Python 命令。
我有可用的服务帐户 JSON,我用它来设置 GOOGLE_APPLICATION_CREDENTIALS 值。该命令失败并出现以下错误:
google.api_core.exceptions.RetryError: 调用 functools.partial(functools.partial(bq-table-name-here
\nLIMIT 100\n', timeout=None)), 最后一个异常:HTTPSConnectionPool (host='oauth2.googleapis.com', port=443): 最大重试次数超出 url: /token (由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败: 证书链中的自签名证书_ssl.c:1123)')))
我尝试执行的实际代码如下:
import yaml
import os
import sys
from google.cloud import bigquery
from google.oauth2 import service_account
from datetime import datetime
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] ="C:\\Users\\username\\Documents\\Code\\Creds\\creds.json"
credentials = os.environ['GOOGLE_APPLICATION_CREDENTIALS']
sql_script = '''
SELECT *
FROM `<project-name>.<dataset-name>.<table-name>`
LIMIT 100
'''
client = bigquery.Client()
location = 'asia-southeast1'
query_job = client.query(sql_script,location=location).to_dataframe()
query_job.to_csv('table_schema_extract.csv')
非常感谢我可能做错了什么,这导致了这个错误。
感谢和干杯! 苏维拉特
【问题讨论】:
该错误是由自签名证书引起的。你在代理后面吗?使用您的网络环境的详细信息编辑您的问题。 不,据我所知,我不在代理后面。我是否需要设置任何证书才能运行此查询提取? 根据您的回答,您在代理后面。这意味着管理代理的任何人都可以完全访问您的数据。这包括您的登录名、密码、电子邮件等。 【参考方案1】:显然,我组织的域配置的工作方式是,无论何时我访问任何经过 Google 帐户验证的服务,例如 GCP、Gmail、Google Drive 等。浏览器的安全证书不会显示为默认的 Google 证书,而是显示我的组织的证书。
我认为这与我的组织中使用的 Google 套装有关。 每次我使用 Python 访问任何 Google 云服务时,它都会尝试使用默认的 Google 证书而不是我组织的证书。由于我的组织笔记本电脑域配置的方式是完成的,因此它不允许正确地进行身份验证。 为了解决这个问题,当我访问 Google 云服务页面时,我必须从浏览器中手动提取证书文件,然后将此证书文件附加到 python 的默认证书文件中。一旦我尝试执行相同的 Python 命令,它就会成功运行而不会出现任何问题。当您从浏览器访问证书文件时,请记住附加所有证书级别的证书,而不仅仅是根或父级证书。 知道Python证书文件位置的方法是:
-
执行:pip install certifi
导入 CERTIFI UTILITY:导入证书
运行:打印(certifi.where())
这将为您提供如下路径: C:\Users\PycharmProjects
【讨论】:
您能否向我们展示将 Google 证书添加到 >PEM 文件的步骤?以上是关于如何在使用 Python (PyCharm) 查询 Google Big Query 时修复 CERTIFICATE_VERIFY_FAILED 错误的主要内容,如果未能解决你的问题,请参考以下文章