使用adodbapi连接到SQLServer 2005

Vec*_*tor 6 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的完整错误消息):

回溯(最近一次调用最后一次):文件"D:\ Program Files\Wing IDE 4.0\src\debug\tserver_sandbox.py",第2行,如果名称 ==' main ':文件"D:\ Python32\Lib\site-packages\adodbapi\adodbapi.py",第298行,在connect中引发InterfaceError #Probably COM错误adodbapi.adodbapi.InterfaceError:

我可以跟踪代码并查看异常情况.

我也尝试使用带有OLEDB提供程序的conn字符串和集成的Windows安全性,结果相同.

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

我该如何解决?

tho*_*mas 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')
Run Code Online (Sandbox Code Playgroud)

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