首页 > 解决方案 > SAS IOM 桥与 Python

问题描述

我正在使用 IOM Bridge 连接到远程 SAS 工作区服务器:

import win32com.client

objFactory = win32com.client.Dispatch("SASObjectManager.ObjectFactoryMulti2")

objServerDef = win32com.client.Dispatch("SASObjectManager.ServerDef")
objServerDef.MachineDNSName = "servername"
objServerDef.Port = 8591    # workspace server port
objServerDef.Protocol = 2   # 2 = IOM protocol
objServerDef.BridgeSecurityPackage = "Username/Password"
objServerDef.ClassIdentifier = "workspace server id"

objSAS = objFactory.CreateObjectByServer("SASApp", True, objServerDef, "uid", "pw")

program = "ods listing;proc means data=sashelp.cars mean mode min max; run;"

objSAS.LanguageService.Submit(program)

_list = objSAS.LanguageService.FlushList(999999)
print(_list)

log = objSAS.LanguageService.FlushLog(999999)
print(log)

objSAS.Close()

它工作正常。但是在尝试使用存储过程服务器时(当我更改“端口”和“类标识符”时),我似乎找不到 CreateObjectByServer 的正确属性:

import win32com.client

objFactory = win32com.client.Dispatch("SASObjectManager.ObjectFactoryMulti2")

objServerDef = win32com.client.Dispatch("SASObjectManager.ServerDef")
objServerDef.MachineDNSName = "servername"
objServerDef.Port = 8601    # stored process server port
objServerDef.Protocol = 2   # 2 = IOM protocol
objServerDef.BridgeSecurityPackage = "Username/Password"
objServerDef.ClassIdentifier = "stp server id"

objSAS = objFactory.CreateObjectByServer("SASApp", True, objServerDef, "uid", "pw")

objSAS.StoredProcessService.Repository("path", "stp", "params")

_list = objSAS.LanguageService.FlushList(999999)
print(_list)

log = objSAS.LanguageService.FlushLog(999999)
print(log)

objSAS.Close()

尝试上述方法时,我得到:

AttributeError: CreateObjectByServer.StoredProcessService

我似乎找不到太多关于存储过程服务器的 IOM 文档。有人有什么建议吗?

标签: pythoncomsaswin32comsas-stored-process

解决方案


推荐阅读