Подключение к SQLServer 2005 с помощью adodbapi - PullRequest
6 голосов
/ 22 мая 2011

Я очень новичок в Python, и у меня установлен Python 3.2 на рабочей станции Win 7-32.Попытка подключиться к серверу MSSQLServer 2005 с помощью adodbapi-2.4.2.2, последнего обновления этого пакета.

Код / строка подключения выглядит следующим образом:

conn =adodbapi.connect ('Provider = SQLNCLI.1; Интегрированная безопасность = SSPI; Постоянная информация о безопасности = Ложь; Начальный каталог = XXX; Источник данных = 123.456.789');

Из adodbapiЯ постоянно получаю сообщение об ошибке (это полное сообщение об ошибке из оболочки Wing IDE):

Traceback (последний вызов был последним): файл "D: \ Program Files \ Wing IDE 4.0 \ src \ debug \"tserver_sandbox.py ", строка 2, если name == ' main ': файл" D: \ Python32 \ Lib \ site-packages \ adodbapi \ adodbapi.py ", строка298, в Connect Rift InterfaceError # Вероятно, ошибка COM adodbapi.adodbapi.InterfaceError:

Я могу проследить через код и увидеть исключение, как это происходит.

Я также пытался использовать connстроки с поставщиком OLEDB и встроенной системой безопасности Windows, с теми же результатами.

Все эти строки подключения работают нормально из файла UDL на моей рабочей станции и из SSMS, но не с той же ошибкой в ​​adodbapi.

Как это исправить?

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

Попробуйте эту строку подключения:

Initial Catalog=XXX; Data Source=<servername>\\<SQL Instance name>; Provider=SQLOLEDB.1; Integrated Security=SSPI

Обновление

Умм, ок.Глядя на источник для adodbapi, я бы сказал, что у вас ошибка COM.(да, я знаю, что след говорит, что).Но именно с инициализацией соответствующих COM-объектов.

Это означает, что ваша строка подключения не имеет ничего общего с трассировкой.Я думаю, что для начала лучше всего убедиться, что ваша копия pythoncom обновлена.

Возможно, win32com / pythoncom еще не поддерживает Python 3K (начиная с версии 3.0), но послеМинуту в поиске Google я не нашел ничего полезного, я оставлю это вам.

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

import win32com.client
import pythoncom
pythoncom.CoInitialize()
win32com.client.Dispatch('ADODB.Connection')

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

3 голосов
/ 05 марта 2015

В случае, если кто-то еще найдет эту ветку в поисках разрешения аналогичной ошибки, которую я видел в Python 2.7:

Traceback (most recent call last):
  File "get_data.py", line 10, in <module>
    connection = get_connection(r"XXX\YYY", "DB")
  File "get_data.py", line 7, in get_connection
    conn = adodbapi.connect(connstring)
  File "C:\Python27\lib\site-packages\adodbapi\adodbapi.py", line 116, in connect
    raise api.OperationalError(e, message)
adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",), 'Error opening connection to "Data Source=XXX\\YYY; Initial Catalog=DB; Provider=SQLOLEDB.1; Integrated Security=SSPI"')

В моем случае простым решением было установить Python для расширений Windows (pywin32) отсюда: http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/

2 голосов
/ 31 января 2014

У меня была такая же проблема, и я отследил ее до сбоя при загрузке win32com.pyd из-за некоторых системных библиотек DLL, которых нет в «пути загрузки dll», таких как msvcp100.dll

Я решил проблему, скопировав многие из этих dll (возможно, слишком много) в C: \ WinPython-64bit-3.3.3.2 \ python-3.3.3.amd64 \ Lib \ site-packages \ win32

...