ось - Win XP SP3
питон - 2.7
pyodbc - 2.1.8
Для работы с файлами mdb (MS Access) необходим драйвер, там где установлен MS офис или Access он всегда есть, противное не проверял.
Испробовал два варианта:
I. Задействуется вкладка “Администратор источников данных ODBC”
- Пуск » Настройка » Панель управления » Администрирование » Источник данных (ODBC);
- В закладке “Пользовательские DSN” » кнопка “Добавить” » строка “Driver do Microsoft Access (*.mdb)” » кнопка “Готово”;
- Форма “Установка драйвера ODBC для Misrosoft Access”, обязательное поле для заполнения “Имя источника данных” - любой ник (в моем случает accOrder), это будет значение ключа DSN в параметрах метода connect;
- В поле “База данных” » кнопка “Выбрать” » выбираем необходимый файл mdb » кнопка “OK”
- ВСЕ готов, формы и вкладки можна позакрывать
Геморойно, как для первого раза, не правда ли? А если файлов несколько, а если нужно ставить на нескольких компах … точно - геморойно.
ну и фрагмент кода:
import pyodbc
db = pyodbc.connect('DSN=accOrder')
dbc = db.cursor()
dbc.execute('select * from [table]') #table - имя таблицы из моего файла БД MS Access, если обернуто в [] тогда работает на всех версиях драйвера
rows = [row for row in dbc.fetchall()]
db.close()
Это более удобный способ, имхо, без “лазания” по системным вкладкам и заполнения форм. Проще в коде згенерить строку для драйвера Access. Тем более, что ее можно генерить динамически, скажем прочитав путь и имя файла БД из какой нибудь конфигурации.
Итак код:
from pyodbc import *
db = connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\\py\\order.mdb') #order.mdb - собственно мое файло БД
dbc = db.cursor()
dbc.execute('select * from [table]')
rows = [row for row in dbc.fetchall()]
db.close()
собственно и все … главное законектится, остальное - дело SQL, у MS свой сленг, но это не одна сотня страниц в доках, удачи :)
P.S.
Понимаю что тема специфичная, пишут об этом мало и в основном спецы. Для них это как “два пальца…”, а их локаничные пояснения не всегда понятны новичкам (сам такой), поэтому в словянском инете инфы почти нет.
Тему вывесил для ознакомления новичкам. Если кто из гуру дополнит чем то толковым или покритикует - ему респкт.
С уважением.