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

Tableau服务器登录遇SSL证书验证错误:请求重试超限

Tableau服务器连接SSL证书验证失败问题解决

问题场景

要将Tableau服务器上的工作簿数据导入Google Sheets,使用tableauserverclient库编写连接代码时出现SSL证书验证错误,代码及错误信息如下:

连接代码

import tableauserverclient as TSC
import requests

tableau_auth = TSC.PersonalAccessTokenAuth('Token Name', 'Access Token', site_id='URL of workbook')
server = TSC.Server('server URL', use_server_version=True)
server.auth.sign_in(tableau_auth)

错误信息

SSLError: HTTPSConnectionPool(host='Server URL', port=443): Max retries exceeded with url: //api/2.4/auth/signin (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))

解决方案

1. 临时禁用SSL验证(仅测试环境使用)

这是快速绕过错误的方法,但绝对不能用于生产环境,会带来安全风险。在初始化server对象后添加一行代码:

server.add_http_options({'verify': False})

修改后的完整代码:

import tableauserverclient as TSC
import requests

# 注意:site_id是Tableau站点的ID(不是工作簿URL),通常是站点名称或URL末尾的标识
tableau_auth = TSC.PersonalAccessTokenAuth('Token Name', 'Access Token', site_id='你的站点ID')
server = TSC.Server('server URL', use_server_version=True)
# 临时禁用SSL验证
server.add_http_options({'verify': False})
server.auth.sign_in(tableau_auth)

注意:你之前将site_id设为工作簿URL是错误的,site_id需要填写Tableau站点的实际ID,可在Tableau服务器的站点设置中查看。

2. 导入可信证书(生产环境推荐)

通过导入Tableau服务器的SSL证书,让Python信任该服务器:

  • 打开浏览器访问Tableau服务器URL,点击地址栏的锁图标,导出服务器的SSL证书(保存为.pem格式)
  • 在代码中指定证书路径:
server.add_http_options({'verify': '/本地证书文件路径/tableau_cert.pem'})

也可以将证书添加到系统的可信证书存储中,让Python自动识别。

3. 配置requests库的CA证书

如果系统默认的CA证书存储存在问题,可以通过环境变量指定requests的CA bundle路径:

import os
# 替换为你的CA bundle文件路径
os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/ca-bundle.pem'

后续数据提取到Pandas DataFrame

连接成功后,可通过tableauserverclient获取工作簿数据源,将数据提取到DataFrame,示例代码如下:

# 获取所有工作簿
workbooks, _ = server.workbooks.get()
# 找到目标工作簿
target_workbook = next(wb for wb in workbooks if wb.name == '你的工作簿名称')
# 加载工作簿的连接信息
server.workbooks.populate_connections(target_workbook)

for connection in target_workbook.connections:
    # 处理提取类型的数据源
    if connection.is_extract:
        # 下载提取文件
        extract_path = server.download(connection.id)
        # 使用tableauextractapi读取提取文件并转换为DataFrame
        from tableauextractapi import Extract
        import pandas as pd
        
        with Extract(extract_path) as extract:
            table = extract.open_table('Extract')
            # 将提取表的行数据转换为DataFrame
            df = pd.DataFrame([row.values for row in table])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:03:18