Как подключить pyodbc к файлу базы данных Access (.mdb)

Вот что я пробовал:

- Найдите диспетчер источников данных ODBC* в Vista с помощью поиска,

-Добавить новый источник данных файла *, выбрав Драйвер для Microsoft Access (*.mdb) и выбрав интересующий файл mdb,

-импортируйте pyodbc из оболочки Python и попробуйте:

pyodbc.connect("DSN=<that Data Source I just created>")

Я получаю следующее сообщение об ошибке (португальский**):

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados n\xe3o encontrado e nenhum driver padr\xe3o especificado (0) (SQLDriverConnectW)') 

Что переводится как «Имя источника данных не найдено и стандартный драйвер не указан».

Что я делаю неправильно? Как сделать это правильно? Кроме того, я искал в Интернете документацию, но не нашел ничего стоящего, может ли кто-нибудь порекомендовать какую-либо документацию?

*Имена могут быть неточными, потому что моя Windows на португальском языке.

** Нет, в португальском языке нет букв «3» и «\», это специальные символы с опечаткой.


person Emilio M Bumachar    schedule 15.07.2010    source источник


Ответы (4)


DSN= используется только для системного или пользовательского DSN.

Для файла DSN необходимо использовать FILEDSN=c:\myDsnFile.dsn.

http://www.connectionstrings.com/ — ваш лучший друг.

person Rawheiser    schedule 15.07.2010

У меня была аналогичная проблема с pyodbc, но не с Access, а с другим драйвером ODBC.

Это то, что помогло мне. http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (вот соответствующая статья базы знаний на случай, если этот URL исчезнет. http://support.microsoft.com/kb/942976/en-us)

Наше предыдущее серверное оборудование умерло, и нам пришлось быстро переустановить 64-битную ОС, потому что это все, что у нас было. Используя обычный инструмент администрирования ODBC, я добавил DSN с соответствующим именем, но он по-прежнему утверждал, что не найден. Только при запуске специальной 32-разрядной версии администратора ODBC я смог определить DSN, который мог найти мой скрипт, использующий pyodbc.

person jaywgraves    schedule 22.12.2011

Я использую модуль odbc (входит в ActiveState Python), но протестировал pyodbc и у меня работает:

#db = odbc.odbc('northwind')
#db = odbc.odbc('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
#db = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;')
db = pyodbc.connect('DSN=northwind')

Конечно, закомментированные соединения тоже работают.

Я настроил nothwind как пользовательский DSN, поэтому вам, вероятно, придется настроить подключение к базе данных ODBC как пользовательский DSN или системный DSN, или без настройки в администраторе ODBC вы можете использовать ConnectString, где вы можете указать на свой файл .mdb.

person Michał Niklas    schedule 16.07.2010

Разумно составить список ваших соединений odbc с помощью pyodbc, чтобы увидеть, что вы используете. Убедитесь, что вы используете соответствующий pyodbc 32-битный 32-битный драйвер Python. Если вы хотите использовать 64-битные файлы доступа, вы должны использовать 64-битный MS Access, который предоставляет драйвер.

sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys: 
   print key
person Greg    schedule 18.02.2015