Найти - Пользователи
Полная версия: pyodbc - работа с файлами mdb (MS Access) в среде Win XP
Начало » Базы данных » pyodbc - работа с файлами mdb (MS Access) в среде Win XP
1 2
Ginibe
Исходные:
ось - 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()
II. Указание драйвера через параметр метода connect.
Это более удобный способ, имхо, без “лазания” по системным вкладкам и заполнения форм. Проще в коде згенерить строку для драйвера 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()
Обращаю внимание на ньанс, который может вызвать ступор у новичков - параметр метода connect, фрагмент “DBQ=d:\\py\\order.mdb” : правильный формат указания полного имени файла для Win выглядит так “d:\py\order.mdb”, однако символ бэкслеша питон интерпретирует в строках как управляющий, поэтому для питона всегда нужнА пара таких в пути-имени файла.

собственно и все … главное законектится, остальное - дело SQL, у MS свой сленг, но это не одна сотня страниц в доках, удачи :)

P.S.
Понимаю что тема специфичная, пишут об этом мало и в основном спецы. Для них это как “два пальца…”, а их локаничные пояснения не всегда понятны новичкам (сам такой), поэтому в словянском инете инфы почти нет.
Тему вывесил для ознакомления новичкам. Если кто из гуру дополнит чем то толковым или покритикует - ему респкт.
С уважением.
ata
Сапасипа дружище, как раз пригодилось !!!
mrJUB
Здравствуйте!
подскажите, с файлами разрешения .db (создан в paradox) по такому принципу можно работать?
Ginibe
Не имел опыта с работой в paradox. Думаю что там требуется другой пакет (не pyodbc) для работы с файлами БД. Поищите инфу специально под paradox.
mrJUB
Спасибо!!!
PooH
mrJUB
Здравствуйте!
подскажите, с файлами разрешения .db (создан в paradox) по такому принципу можно работать?
Не пробовал, но теоретически должно работать. Надо только ODBC драйвер для Paradox установить и настроить.
Ruchey
Подскажите, как из питона создать файл базы access .mdb?
kolesnikny
Подскажите что значит такая ошибка:
Traceback (most recent call last):
File “H:\razrab\Python\access\1.py”, line 8, in <module>
db = connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=d:\\py\\1.mdb')
pyodbc.Error: ('IM002', ' �������� ������ �� ������ � �� ������ �������, ������������ �� ��������� (0) (SQLDriverConnect)')
PooH
Data source name not found and no default driver specified
101s
ось Win 8.1
Python 3.4
pyodbc - тут не знаю как посмотреть версию.

В поле “База данных” » кнопка “Выбрать” » выбираем необходимый файл mdb » кнопка “OK”
- этого тоже не делаю никогда, там никаких баз не прописано

Пользуюсь вторым способом:
 import pyodbc
ACCESSPATH = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=D:/base.mdb"
pyodbc.connect(gl.ACCESSPATH, autocommit=True)

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB