我正在使用Python2.7 32位(遗憾的是,Primavera的SDK只能用于32位)并使用comtype模块在windows 10 64位上创建与Primavera软件开发工具包的连接。
我代码的有效部分是
#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工具,如下所示:
但是无论我用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))怎样才能让蟒蛇认识到Primavera的软件开发工具包?!
编辑
将ConnectionString更改为DRIVER={Primavera Software Development Kit};DSN=PMSDK;DATABASE=C:\Oracle\Primavera P6\PMSDK\Drivers;UID=pubuser;PWD=pubuser或将DRIVER={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))发布于 2017-09-28 06:46:25
这是一条多么奇怪(或者更简单)的连接之路。
简单地说,ConnectionString必须是:
"DRIVER={Primavera Software Development Kit};DSN=PMSDK;DATABASE=PMSDK;UID=myuid;PWD=mypwd"在这里,您必须用用户名和密码替换myuid和mypwd,在此欢迎屏幕上定期打开Primavera时输入的密码。
请记住,这个问题是由于对如何连接到python 2.7上的Primavera的软件开发工具包(只适用于32位安装)进行了简单测试造成的,因此,如果您尝试使用python 64位,您必须面对安装32位版本的可悲事实,还必须重新安装这个新安装版本所需的所有包/扩展。
也就是说,我在使用64位版本的工作中已经安装了comtype,但是为了使代码运行,我不得不再次安装它,只针对32位版本。
您必须为新的python32位安装创建一个单独的文件夹,命名它为Python27_32,并在安装过程中选择它。
之后,要用pip实用程序或32位版本的setup.py文件安装软件包,需要从它的特定文件夹运行python,因此没有python -m pip install <package>,而是C:\Python27_32\python.exe -m pip install或C:\Python27_32\python.exe setup.py install。
https://stackoverflow.com/questions/46455049
复制相似问题