使用adodbapi连接到SQLServer 2005

时间:2011-05-22 06:03:53

标签: python database sql-server-2005 adodbapi

我是Python的新手,我在Win 7-32工作站上安装了Python 3.2。尝试使用adodbapi-2.4.2.2连接到MSSQLServer 2005 Server,这是该软件包的最新更新。

代码/连接字符串如下所示:

conn = adodbapi.connect('Provider = SQLNCLI.1; Integrated Security = SSPI; Persist Security Info = False; Initial Catalog = XXX; Data Source = 123.456.789');

来自adodbapi我不断收到错误(这是来自Wing IDE shell的完整错误消息):

Traceback(最近一次调用最后一次):   文件“D:\ Program Files \ Wing IDE 4.0 \ src \ debug \ tserver_sandbox.py”,第2行,in     如果名称 =='主要':   连接文件“D:\ Python32 \ Lib \ site-packages \ adodbapi \ adodbapi.py”,第298行     引发InterfaceError #Probably COM错误 adodbapi.adodbapi.InterfaceError:

我可以浏览代码并查看异常情况。

我还尝试将conn字符串与OLEDB提供程序一起使用并集成Windows安全性,结果相同。

所有这些连接字符串都可以从我的工作站上的UDL文件和SSMS中正常工作,但在adodbapi中失败并出现相同的错误。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

尝试此连接字符串:

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')

此外,代码抛出的任何异常都有助于调试问题。

答案 1 :(得分:3)

如果有其他人发现这个线程正在寻找解决方案,那就是我在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 for Windows Extensions(pywin32): http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/

答案 2 :(得分:2)

我遇到了同样的问题,因为一些不在“dll加载路径”中的系统DLL,我将其跟踪到加载win32com.pyd失败,例如msvcp100.dll

我通过将很多这些dll(可能太多)复制到C:\ WinPython-64bit-3.3.3.2 \ python-3.3.3.amd64 \ Lib \ site-packages \ win32

来解决了这个问题