无法使pyodbc-4.0 64bit找到excel驱动程序(windows10-64bit)

时间:2017-01-07 18:56:16

标签: pyodbc windows-10-desktop

我不知道如何使用pyodbc4连接到我的excel文件,在Windows 10 64位(python-3.6)上。任何人都知道我在这段代码中的错误?

import pyodbc
import os
sources = pyodbc.dataSources()
dsns = list(sources.keys())
dsns.sort()
sl = []
for dsn in dsns:
    sl.append('%s [%s]' % (dsn, sources[dsn]))
print('\n'.join(sl))

# DATABASE CONNECTION
filename = 'C:\\WinPython\\basedir36\\buildZero\\winpython-64bit-3.6.x.1\\notebooks\\test.xls'
assert os.path.exists(filename)

# was wrong: CNXNSTRING = 'Driver={Microsoft Excel Driver (*.xls)};DBQ=%s;READONLY=FALSE' % filename
CNXNSTRING = 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=%s;READONLY=FALSE' % filename
print ('CNXNSTRING is ', CNXNSTRING)
cnxn = pyodbc.connect(CNXNSTRING, autocommit=True)

结果合64位:

 >>> 
 RESTART: C:/WinPython/basedir36/buildZero/winpython-64bit3.6.x.1/notebooks/TEST6.py 
 Excel Files [Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)]
 MS Access Database [Microsoft Access Driver (*.mdb, *.accdb)]
 dBASE Files [Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)]
 CNXNSTRING is  Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\WinPython\basedir36\buildZero\winpython-64bit-3.6.x.1\notebooks\test.xls;READONLY=FALSE
 Traceback (most recent call last): File "C:/WinPython/basedir36/buildZero/winpython-64bit-3.6.x.1/notebooks/TEST6.py", line 17, in <module>
cnxn = pyodbc.connect(CNXNSTRING, autocommit=True)
 pyodbc.Error: ('IM002', '[IM002] [Microsoft][Gestionnaire de pilotes ODBC]     Source de donn�es introuvable et nom de pilote non sp�cifi� (0) (SQLDriverConnect)')
 >>> 

新发现:如果我使用pyodbc4- 32位和python-3.6 32位,它的工作原理...那么如何让它在64位工作呢?

结果合32位:

>>> 
 RESTART: C:\WinPython\basedir36\buildZero\winpython-32bit-3.6.x.1\notebooks\TEST6.py 
Excel Files [Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)]
MS Access Database [Microsoft Access Driver (*.mdb, *.accdb)]
dBASE Files [Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)]
CNXNSTRING is  Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\WinPython\basedir36\buildZero\winpython-64bit-3.6.x.1\notebooks\test.xls;READONLY=FALSE
>>>

1 个答案:

答案 0 :(得分:1)

  

如果我使用pyodbc4- 32位和python-3.6 32位,它的工作原理...那么如何让它在64位工作呢?

如果脚本在64位Python下运行,则需要安装64位版本的Excel ODBC驱动程序。

  

这台电脑上有一个旧的Office 32 32位

可以对32位版本的Office执行64位Access数据库引擎(包括Access和Excel ODBC驱动程序)的“强制安装”,但不建议这样做,因为在某些情况下它可以打破Office安装。 (它被称为“强制安装”,因为Access数据库引擎安装程序的默认行为是防止它发生。)

如果不再使用“旧办公室2007”,则可以卸载它,然后安装64位版本的Access数据库引擎。如果仍然使用 ,那么你可能应该坚持将Python脚本作为32位运行。