Primavera P6 SDK не может создать соединение с Python 27

Я пытаюсь создать соединение с комплектом разработки программного обеспечения Primavera в 64-разрядной версии Windows 10, используя 32-разрядную версию Python 2.7 (к сожалению, SDK Primavera доступен только для 32-разрядной версии) и используя модуль comtypes.

Эффективная часть моего кода

#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

Свойства PMSDK при настройке 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))

Что нужно сделать, чтобы Python распознал Primavera's Software Development Kit?!


РЕДАКТИРОВАТЬ

изменив 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))

1 ответ

Какой странный (или довольно простой) маршрут, чтобы получить это соединение.

Просто ConnectionString должен быть:

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

Где вы должны заменить myuid а также mypwd с именем пользователя и паролем, введенными при регулярном открытии Primavera на этом экране приветствия

Экран приветствия


Имейте в виду, что эта проблема является результатом простого теста на то, как подключиться к Primavera's Software Development Kit на Python 2.7 (работает только с 32-битной установкой), поэтому, если вы попытаетесь использовать Python 64-битную, вам придется столкнуться с печальным фактом: установите 32-битную версию, а также вам необходимо переустановить все необходимые пакеты / расширения для этой новой установленной версии.

т.е. у меня уже были установлены комтипы во время моей работы с 64-битной версией, но для запуска кода мне пришлось установить его заново исключительно для 32-битной версии.

Вы должны создать отдельную папку для вашей новой 32-битной установки Python, назовите ее, например, Python27_32и выбрал его, когда спросили во время установки.

После этого, чтобы установить пакеты с помощью утилиты pip или с файлами setup.py для вашей 32-битной версии, вам нужно запустить python из определенной папки, следовательно, нет python -m pip install <package>было бы вместо C:\Python27_32\python.exe -m pip install или же C:\Python27_32\python.exe setup.py install

Другие вопросы по тегам