Python使用TM1py连接TM1报'NoneType'无text属性错误如何解决
TM1py连接报错
AttributeError: 'NoneType' object has no attribute 'text'解决方法 报错原因定位
该错误出现在TM1py初始化会话阶段,向TM1服务发送请求后未收到有效响应对象,导致尝试读取响应的text属性时失败。
可行解决步骤
- 调整SSL相关配置
绝大多数TM1实例的默认HTTP端口(如你使用的85端口)未启用SSL,优先尝试将ssl=True修改为ssl=False测试。如果确认服务端启用了SSL,有两种处理方案:- 将TM1服务的自签名证书导入新VM的系统受信任根证书库
- 在
TM1Service参数中添加verify=False临时跳过证书校验(生产环境不推荐)
- 修正参数命名规范
TM1py官方要求的实例名参数为server,你当前使用的Servers属于不规范写法,部分版本可能存在兼容性问题,建议修改为server="serverName" - 跳过本地代理拦截
即使系统代理配置和旧VM一致,也可能存在IP级别的代理规则异常,在代码开头添加如下配置,强制TM1请求不走代理:import os os.environ['NO_PROXY'] = '11.22.33.123' - 验证应用层请求连通性
之前的网络连通性测试仅能验证网络层通畅,无法确认HTTP请求是否被防火墙、EDR、杀毒软件等应用层规则拦截,在新VM的CMD中执行如下命令验证API可访问性:
如果返回XML格式的元数据内容说明API可正常访问,否则需要排查应用层拦截规则。# SSL关闭时执行 curl http://11.22.33.123:85/api/v1/$metadata # SSL开启时执行 curl https://11.22.33.123:85/api/v1/$metadata -k
修改后的参考测试代码
import os os.environ['NO_PROXY'] = '11.22.33.123' from TM1py.Services import TM1Service from TM1py.Utils.Utils import build_pandas_dataframe_from_cellset # with语句会自动管理会话,无需手动调用logout with TM1Service(address="11.22.33.123", server="serverName", port=85, user='activeuser', password='correctpassword', ssl=False, verify=False) as tm1: data = tm1.cubes.cells.execute_view(cube_name="CubeName", view_name="ViewName", private=True) df = build_pandas_dataframe_from_cellset(data, multiindex=False) df.to_csv(r'D:\data.csv', index=False, header=True)
内容的提问来源于stack exchange,提问作者ViforSmph
相关产品推荐
相关产品推荐

