Не удается подключиться к базе данных Access с помощью pyodbc

Я бьюсь об этом уже несколько дней. Я пытаюсь использовать pyodbc для подключения к базе данных Microsoft Access, и я не могу правильно понять строку подключения или что-то в этом роде. Вот что я использую:

cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\to\file.accdb')

Я получаю сообщение об ошибке:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')

Хотя когда я бегу dataSources(), я вижу:

{'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)'}

Что-то мне здесь очень не хватает?


person dciliske    schedule 28.12.2010    source источник
comment
Есть аналогичный вопрос, который может помочь: stackoverflow.com/questions/3251702/   -  person Fionnuala    schedule 28.12.2010
comment
Я уже нашел эту ветку и попробовал все, что она предлагает. По-прежнему не могу заставить это работать.   -  person dciliske    schedule 28.12.2010
comment
Это полезно, когда вы публикуете вопрос после попытки других решений SO, чтобы указать на них и объяснить, почему они не решили вашу проблему.   -  person David-W-Fenton    schedule 29.12.2010
comment
У меня та же самая строка ошибки, что и раньше   -  person dciliske    schedule 29.12.2010


Ответы (2)


Это проблема с 64-битностью. Я решил это с помощью 32-битного python и pyodbc.

person eowoyn    schedule 09.11.2011

Попробуйте добавить Provider=MSDASQL. Он устарел, но, похоже, работает нормально:

cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};
DBQ=C:\Path\to\file.accdb; Provider=MSDASQL;')
person mwolfe02    schedule 28.12.2010
comment
Пробовал. Не работает. Я действительно что-то упускаю? Я использую Windows 7 Professional с Access 2007 - person dciliske; 29.12.2010
comment
У меня это сработало с Access XP (2002), подключенным к .mdb в Windows 7 Professional. Поскольку он устарел, возможно, он не поддерживает новый формат .accdb. - person mwolfe02; 29.12.2010
comment
Это также сработало для меня с Access 2007, подключенным к .accdb в Windows XP Professional. У меня нет машины Win7 с установленным Access 2007, поэтому я не могу реплицировать вашу среду. - person mwolfe02; 29.12.2010
comment
хорошо, теперь я действительно озадачен ... Все, что я пробую, всегда выдает одну и ту же строку с ошибкой. - person dciliske; 29.12.2010
comment
@SwimmingCode У вас есть какое-то решение этого вопроса, который вы разместили, не прибегая к использованию 32-битного python и pyodbc? У меня точно такая же проблема. - person Jack_of_All_Trades; 28.10.2014
comment
Попробуйте следующее: microsoft.com/en-us/download/details .aspx? id = 13255 Мне не удалось, потому что я установил 32-разрядный Office. Как кажется, для Access 2007 нет 64-битного драйвера, так что это может вам помочь. - person Pavel Hanpari; 05.01.2016