【发布时间】:2011-09-17 19:03:16
【问题描述】:
我在 Win7 x64 上,使用 Python 2.7.1 x64。我正在将我在 VC++ 中创建的应用程序移植到 Python 以用于教育目的。
原始应用程序使用以下连接字符串连接到 MS Access 2007 格式的 DB 文件没有问题:OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|DB.accdb");
现在,当我尝试使用 pyodbc 和以下连接字符串在 Python 中连接到同一个数据库文件(这次放在 C:\ 中)时:conn = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\DB.accdb;")
,无论我是保留 OLEDB 提供程序还是使用 Provider=MSDASQL; 提到的 here (MS mentions it's not availiable for 64bit),我都会收到以下错误:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')
什么可能导致这个问题?
添加:
我更仔细地查看了 pyodbc 文档并尝试了conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c:\\DB.accdb;") - 同样的错误。这真的很奇怪,因为 pyodbc.dataSources() 表明我有这个提供者。
添加2: 我尝试使用诸如here 之类的 win32com.client 来使用 OLE DB 进行连接 - 没有成功。似乎不可能,没有任何作用。
【问题讨论】:
标签: python ms-access 64-bit pyodbc