Primavera P6 SDK 无法与 Python 27 创建连接

问题描述 投票:0回答:2

我正在尝试使用 Python 2.7 32 位(遗憾的是 Primavera 的 SDK 仅适用于 32 位)并使用 comtypes 模块在 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 工具,如下图所示:

SDK added as a Data Source named PMSDK

Properties of PMSDK at ODBC Configuration

但是无论我用 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=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))
python python-2.7 ado comtypes primavera
2个回答
1
投票

获得这种连接的途径多么奇怪(或者相当简单)。

简单地说,ConnectionString必须是:

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

您必须将

myuid
mypwd
替换为您定期在此欢迎屏幕上打开 Primavera 时输入的用户名和密码

Welcome Screen


请记住,此问题是由于对如何在 python 2.7 上连接到 Primavera 软件开发套件(仅适用于 32 位安装)的简单测试而导致的,因此,如果您尝试使用 python 64 位,则必须面对悲伤的事实要安装 32 位版本,您还必须重新安装这个新安装版本所需的所有软件包/扩展。

即我在使用 64 位版本时已经安装了 comtypes,但为了使代码运行,我必须仅针对 32 位版本再次安装它。

您必须为新的 python 32 位安装创建一个单独的文件夹,将其命名为例如

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

    


0
投票
如果您尝试使用 Python 2.7 连接到 Primavera P6 并遇到问题,则应检查并考虑以下事项:

Python 2.7 生命周期结束 (EOL):Python 2.7 于 2020 年 1 月 1 日结束。强烈建议升级到 Python 3.x,因为 Python 2.7 不再受支持,也不会收到更新或安全补丁。许多库和工具,包括与项目管理和数据库连接相关的库和工具,也已将重点转移到 Python 3。

什么是 Primavera p6

Primavera P6 SDK 兼容性:确保您使用的 Primavera P6 SDK 版本与 Python 2.7 兼容。旧版本的 SDK 可能与 Python 2.7 不兼容。您可以查看 Primavera P6 SDK 的文档以获取有关 Python 兼容性的信息吗?

依赖项:确保您已安装 Primavera P6 SDK 所需的任何依赖项或库。这可能包括数据库驱动程序、网络库或特定于您的设置的其他依赖项。

连接参数:验证您是否提供了正确的连接参数,例如主机、端口、用户名和密码,以连接到 Primavera P6 数据库。您能否仔细检查代码中这些参数是否有拼写错误或错误?

SDK 配置:确保 Primavera P6 SDK 针对 Python 2.7 正确配置。这可能涉及设置环境变量或调整配置文件以指向正确的 Python 2.7 解释器和库。

错误消息:密切注意创建连接时收到的任何错误消息或异常。这些消息通常可以提供有关问题所在的宝贵信息。

升级到 Python 3:考虑将您的 Python 环境升级到 Python 3.x。建议将这种方法用于现代开发,并将确保与各种库和工具(包括 Primavera P6 SDK)更好的兼容性。

如果检查这些要点后仍然遇到问题,请提供有关错误消息或遇到的问题的更具体详细信息。这将有助于提供更有针对性的援助。

© www.soinside.com 2019 - 2024. All rights reserved.