0

我正在尝试使用 Python 2.7 32 位(遗憾的是 Primavera 的 SDK 仅适用于 32 位)并使用comtypes模块在 windows 10 64 位上创建与Primavera Software development Kit的连接。

我的代码的有效部分是

#Needed Imports
import sys
import os
import comtypes.client
from comtypes.client import CreateObject

#Create the ADO Object, then connect to Primavera's Database,
#supplying the "ConnectionString" as an argument to the method "Open".
SDK = CreateObject('ADODB.Connection')
SDK.Open("DRIVER={Primavera Software Development Kit};DSN=PMSDK;UID=pubuser;PWD=pubuser")

错误就在这条线上

SDK.Open("DRIVER={Primavera Software Development Kit};DSN=PMSDK;UID=pubuser;PWD=pubuser")

尽管 SDK 配置了 32 位 ODBC 工具,如下图所示:

SDK 添加为名为 PMSDK 的数据源

ODBC 配置中 PMSDK 的属性

但无论我用ConnectionString做什么,我总是面临这个错误

COMError: (-2147467259, 'Unspecified error', (u'[ATI][OpenRDA ODBC]General error - Database keyword not present in the connect string', u'Microsoft OLE DB Provider for ODBC Drivers', None, 0, None))

应该怎么做才能让 python 识别 Primavera 的软件开发工具包?!


编辑

ConnectionString更改为DRIVER={Primavera Software Development Kit};DSN=PMSDK;DATABASE=C:\Oracle\Primavera P6\PMSDK\Drivers;UID=pubuser;PWD=pubuserDRIVER={Primavera Software Development Kit};SERVER=127.0.01;DSN=PMSDK;DATABASE=C:\Oracle\Primavera P6\PMSDK\Drivers;UID=pubuser;PWD=pubuser导致此错误

COMError: (-2147467259, 'Unspecified error', (u'[ATI][OpenRDA ODBC]RDA error: Resource unknown - Database Name:C:\\Oracle\\Primavera P6\\PMSDK\\Drivers is not valid on Server.', u'Microsoft OLE DB Provider for ODBC Drivers', None, 0, None))
4

1 回答 1

1

获得这种连接的方法多么奇怪(或相当简单)。

简单地说,ConnectionString必须是:

"DRIVER={Primavera Software Development Kit};DSN=PMSDK;DATABASE=PMSDK;UID=myuid;PWD=mypwd"

当您在此欢迎屏幕上定期打开 Primavera 时,您必须替换的位置myuid以及mypwd输入的用户名和密码

欢迎屏幕


请记住,这个问题是由关于如何在 python 2.7 上连接到 Primavera 的软件开发工具包的简单测试引起的(仅适用于 32 位安装),所以如果您尝试使用 python 64 位,您必须面对一个可悲的事实安装 32 位版本,并且您必须为这个新安装的版本重新安装所有需要的包/扩展。

即,我在使用 64 位版本的过程中已经安装了comtypes,但是为了使代码运行,我不得不为 32 位版本再次安装它。

您必须为新的 python 32 位安装创建一个单独的文件夹,将其命名为 eg Python27_32,并在安装过程中询问时选择它。

之后,要使用 pip 实用程序或 setup.py 文件为您的 32 位版本安装软件包需要从其特定文件夹运行 python,因此,不python -m pip install <package>,它会改为C:\Python27_32\python.exe -m pip installC:\Python27_32\python.exe setup.py install

于 2017-09-28T06:46:25.030 回答