2017-01-11 4 views
3

pyodbc를 사용하여 MS Access .mdb 데이터베이스에 액세스하려고했습니다. 내가 드라이버 내 DSN에 등록 된 나는에 pyodbc.dataSources()pyodbc.dataSources()에 나열되어 있어도 드라이버를 찾을 수 없습니다.

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

결과에서 찾을 수 있으며, ODBC 드라이버를 설정 한 : 그래서

Excel Files [Microsoft Excel Driver (*.xls)] 
MS Access DB [Microsoft Access Driver (*.mdb, *.accdb)] 
MS Access Database [Microsoft Access Driver (*.mdb)] 
dBASE Files [Microsoft dBase Driver (*.dbf)] 

, 나는하여 DB에 액세스하려고

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 
:이 오류가 계속,

con = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=H:\access-panda\data\myDB.mdb;') 

그러나이 명령을 사용하여

문제를 해결하려했지만 행운이 없습니다. 내가 뭐 놓친 거 없니?

답변

1

pyodbc.dataSources()에 의해 생성 된 목록은 32 비트 및 64 비트 "플랫폼"의 결과를 보여주기 때문에 오해의 소지가 있습니다. 32 비트 Office와 시스템에서 64 비트 파이썬에서 코드를 실행하는 "목록

Excel Files [Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)] 
MS Access Database [Microsoft Access Driver (*.mdb, *.accdb)] 

을 생산하지만, 우리는 64 비트 ODBC 관리자를 열면 우리는 그들이 32 비트 모두있는 것을 볼 수 있습니다 플랫폼 "

odbc64.png

및 관련 드라이버는 하지 64 비트 파이썬에서 실행 pyodbc 할 수있을 것입니다.

A 자료 드라이버의 목록을 더 신뢰할 수있는 방법은 당신에게 당신의 특정 "플랫폼"에 사용할 수있는 드라이버 만 표시해야

drivers = pyodbc.drivers() 
print(drivers) 

을 사용하는 것입니다 (즉, 64 비트 또는 32 비트 파이썬).

+0

예, 파이썬과 pyodbc는 64 비트입니다 ... sysWOW64에서 ODBC 드라이버를 업데이트했지만 문제가 해결되지 않았습니다. 결국 나는 python과 pyodbc를 모두 32 비트로 다운 그레이드했다. pyodbc-64 비트를 올바른 드라이버를 참조하도록 설정하는 방법이 있습니까? –

+1

@SaberAlex - 64 비트 Python/pyodbc는 64 비트 드라이버에서만 작동합니다. 32 비트 Office가 설치된 경우 32 비트 Access ODBC 드라이버를 사용하려면 Python 응용 프로그램을 32 비트로 실행해야합니다. –

+0

내 pyodbc-64 비트가 32 비트 드라이버를 계속 참조합니다. –