Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2012 01:56:55

Ginibe
От:
Зарегистрирован: 2011-04-19
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Исходные:
ось - 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.
Понимаю что тема специфичная, пишут об этом мало и в основном спецы. Для них это как “два пальца…”, а их локаничные пояснения не всегда понятны новичкам (сам такой), поэтому в словянском инете инфы почти нет.
Тему вывесил для ознакомления новичкам. Если кто из гуру дополнит чем то толковым или покритикует - ему респкт.
С уважением.



Отредактировано (Янв. 21, 2012 16:31:36)

Офлайн

#2 Янв. 21, 2012 23:45:03

ata
От:
Зарегистрирован: 2012-01-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Сапасипа дружище, как раз пригодилось !!!



Офлайн

#3 Фев. 21, 2012 13:01:20

mrJUB
От:
Зарегистрирован: 2012-02-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Здравствуйте!
подскажите, с файлами разрешения .db (создан в paradox) по такому принципу можно работать?



Офлайн

#4 Фев. 21, 2012 16:06:43

Ginibe
От:
Зарегистрирован: 2011-04-19
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Не имел опыта с работой в paradox. Думаю что там требуется другой пакет (не pyodbc) для работы с файлами БД. Поищите инфу специально под paradox.



Отредактировано (Фев. 21, 2012 17:51:31)

Офлайн

#5 Фев. 22, 2012 05:45:29

mrJUB
От:
Зарегистрирован: 2012-02-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Спасибо!!!



Офлайн

#6 Фев. 22, 2012 06:27:58

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

mrJUB
Здравствуйте!
подскажите, с файлами разрешения .db (создан в paradox) по такому принципу можно работать?
Не пробовал, но теоретически должно работать. Надо только ODBC драйвер для Paradox установить и настроить.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Июнь 6, 2014 22:49:38

Ruchey
Зарегистрирован: 2014-05-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Подскажите, как из питона создать файл базы access .mdb?

Офлайн

#8 Ноя. 3, 2016 20:19:20

kolesnikny
Зарегистрирован: 2016-05-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Подскажите что значит такая ошибка:
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)')

Офлайн

#9 Ноя. 7, 2016 04:54:41

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

Data source name not found and no default driver specified



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Фев. 8, 2017 01:58:58

101s
Зарегистрирован: 2017-02-08
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc - работа с файлами mdb (MS Access) в среде Win XP

ось 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version