Python и ODBC

Узелок на память про ODBC и python. Понадобилось мне экспортировать с MS Access базу данных с кучей записей и разных связей.

Для доступа к БД на MS Access нужно настроить источник данных (DSN).

Под Windows XP

  1. В Панели управления » Администрирование » Источник данных (ODBC)
  2. На вкладке 'Пользовательские DSN' » Добавить » Driver do Microsoft Access (*.mdb) » Готово
  3. Имя источника данных » test
  4. База данных » Выбрать ... » OK

Модуль со стороны python называется pyodbc, установочные файлы есть тут.

Под Ubuntu

Установим нужные пакеты

sudo apt-get install unixodbc mdbtools libmdbodbc

pip install pyodbc

Настроем драйвер для доступа к MDB файлам. Правим файл /etc/odbcinst.ini

[AccessMS]
Description = AccessMS ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =

Настроем DSN к конкретному mdb-файлау. Правим файл /etc/odbc.ini

[test]
Description = Test mdb database
Driver = AccessMS
Database = /home/proft/temp/test.mdb
Servername = localhost
Username =
Password =
port = 5432

Проверим настроенную связку

isql -v test

SQL> select * from Patient

Строка подключения к настроенному выше DSN:

import pyodbc
dbq = pyodbc.connect('DSN=test')
cursor = dbq.cursor()

Доступ к полям возможен по индексу, либо по имени поля

for row in cursor.execute("select * from Patient"):
    print row[0]
    print row.firstname

Возможности pyodbc чтением не ограничиваются, тут есть примеры других операций.

blog comments powered by Disqus