2017-01-07 2 views
1

Windows 10 64 비트 (python-3.6)에서 pyodbc4로 Excel 파일을 연결하는 방법을 모르겠다. 아무도이 코드에서 내 오류에 대한 단서?pyodbc-4.0 64bit find find driver (windows10-64bit)

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

새로운 발견 : 결과 -에 - 64 비트

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) 

내가 pyodbc4- 사용하는 경우 작동 32 비트 및 파이썬 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

내가 pyodbc4- 사용하는 32 비트 및 파이썬 3.6 32 비트 ... 그래서 어떻게 64 비트에서 작동 할 경우 작동?

스크립트가 64 비트 Python에서 실행되는 경우 64 비트 버전의 Excel ODBC 드라이버가 설치되어 있어야합니다.

있다 오래된 오피스 2007이 PC에서 32 비트

이 액세스 및 Excel ODBC 드라이버를 포함하는 (64 비트 액세스 데이터베이스 엔진의 "강제 설치"할 수 있습니다)를 32 비트 버전의 Office와 함께 제공하지만 일부 상황에서는 Office 설치를 중단시킬 수 있으므로 권장하지 않습니다. Access 데이터베이스 엔진 설치 관리자의 기본 동작은 이러한 문제를 방지하기위한 것이므로 "강제 설치"라고합니다.

"이전 Office 2007"을 더 이상 사용하지 않는 경우 제거한 다음 제거 할 수 있습니다 Access 데이터베이스 엔진의 64 비트 버전을 설치하십시오. 이 여전히 인 경우 Python 스크립트를 32 비트로 실행해야합니다.

+0

오케이, 실제로 잘못되었습니다 ...하지만 CNXNSTRING = '드라이버 = {Microsoft Excel 드라이버 (* .xls, * .xlsx, * .xlsm, * .xlsb)}; DBQ = % s; READONLY = FALSE '정확히 같은 메시지가있는 % filename ... 생각에서 길을 잃었습니다. – stonebig

+0

질문이 현재 상황으로 업데이트되었습니다. 아직 알 수 없음 – stonebig

+0

새로운 발견 : pyodbc4- 32 비트 및 python-3.6을 사용하면 작동합니다. 32 비트 ... 그래서 64 비트에서 작동하도록 만드는 방법? – stonebig