Как подключить pyodbc к файлу базы данных Access (.mdb) - PullRequest
5 голосов
/ 15 июля 2010

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

- Найти диспетчер источников данных 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» и «\», это опечатки специальных символов

Ответы [ 4 ]

6 голосов
/ 15 июля 2010

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

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

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

2 голосов
/ 22 декабря 2011

У меня была похожая проблема с 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.

1 голос
/ 18 февраля 2015

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

sources = pyodbc.dataSources()
keys = sources.keys()
for key in keys: 
   print key
1 голос
/ 16 июля 2010

Я использую 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 Administrator вы можете использовать ConnectString, где вы можете указать свой файл .mdb.

...