Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用adodbapi连接到SQLServer2005_Python_Database_Sql Server 2005_Adodbapi - Fatal编程技术网

Python 使用adodbapi连接到SQLServer2005

Python 使用adodbapi连接到SQLServer2005,python,database,sql-server-2005,adodbapi,Python,Database,Sql Server 2005,Adodbapi,我对Python非常陌生,我在Win7-32工作站上安装了Python 3.2。正在尝试使用adodbapi-2.4.2.2(该软件包的最新更新)连接到MSSQLServer2005服务器 代码/连接字符串如下所示: conn=adodbapi.connect('Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=XXX;Data Source=123.456.789')

我对Python非常陌生,我在Win7-32工作站上安装了Python 3.2。正在尝试使用adodbapi-2.4.2.2(该软件包的最新更新)连接到MSSQLServer2005服务器

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

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\u sandbox.py”,第2行,在 如果name='main': 文件“D:\Python32\Lib\site packages\adodbapi\adodbapi.py”,第298行,在connect中 raise接口错误#可能是COM错误 adodbapi.adodbapi.InterfaceError:

我可以跟踪代码并在异常发生时看到它

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

所有这些连接字符串在我的工作站上的UDL文件和SSM中都可以正常工作,但在adodbapi中也会出现同样的错误


如何修复此问题?

尝试此连接字符串:

初始目录=XXX;数据源=\\;Provider=SQLOLEDB.1;集成安全=SSPI

更新 嗯,好的。查看adodbapi的源代码,我不得不说您遇到了COM错误。(是的,我知道追踪报告是这么说的)。但特别是初始化相关COM对象

这意味着您的连接字符串与回溯无关。我认为一个好的开始是确保你的pythoncom是最新的

可能win32com/pythoncom还不支持python3k(3.0以后的版本),但是在谷歌搜索了一分钟之后,我还没有发现任何有用的东西,我将把它留给你

当您修复了问题后,此代码应该会成功运行(此时应该会失败)


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

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


我通过将大量dll(可能太多)复制到C:\WinPython-64bit-3.3.3.2\python-3.3.3.amd64\Lib\site packages\win32来解决这个问题,以防其他人发现这个线程正在寻找解决我在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"')
回溯(最近一次呼叫最后一次):
文件“get_data.py”,第10行,在
连接=获取连接(r“XXX\YYY”,“DB”)
文件“get_data.py”,第7行,在get_连接中
conn=adodbapi.connect(connstring)
文件“C:\Python27\lib\site packages\adodbapi\adodbapi.py”,第116行,在connect中
raise api.操作错误(e,消息)
adodbapi.apibase.OperationalError:(InterfaceeError(“Windows COM错误:调度('ADODB.Connection')失败。”,,,“打开到“数据源=XXX\\YYY;初始目录=DB;提供程序=SQLOLEDB.1;集成安全=SSPI”的连接时出错”)
在我的例子中,简单的解决方案是从以下位置安装Python for Windows Extensions(pywin32):

我对adodbapi了解不多,但既然它对你不起作用,也许可以试试Pydbapi。祝你好运。@Adam-谢谢-当他们发布Python3时会尝试它-在网页上他们说它待定-请参阅。大约一个月前我刚开始学习Python,Python.org建议新手直接学习3,这就是我所拥有的。我更愿意直接使用ADO,而不必为ODBC连接费心,但如果这就是我工作的全部内容,我会使用它。同时,让我们看看是否有其他人提出了解决方案。谢谢,但是您使用OLEDB的conn字符串似乎没有任何区别。@Mikey快速查看我的更新答案,并将您得到的回溯发回。我将在周末检查。同时,我降级了Python 2.72,因为我要使用的大多数库尚未准备好P3,但仍然有相同的错误,包括本机提供程序和OLEDB。现在,我所看到的唯一一条例外/错误消息是我在OP中发布的。我将接受你的回答,因为你已经花了时间-非常感谢任何进一步的帮助-Tnx。@Mikey-Ummm好的。当您有机会对测试代码进行回溯时,这将是一件好事,但是如果您在使用Python 2.7时遇到问题,那么这将是一件棘手的事情。np-我有另一台机器可以运行,谢谢-几个月前我搬到了GoLang。试试看……:)
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"')