Как подключиться к базе данных доступа (.mdb) с помощью pyodbc, используя имя файла latin-1

Я использую этот код для подключения к моей базе данных доступа (.mdb):

# -*- coding: latin-1 -*-
fileMDB = 'C:\\Python27\\OptimisateurLievre\\final\\Archives_PrevisionsESP_Août_2013.mdb'
param = "Driver={Microsoft Access Driver (*.mdb)};DBQ={%s};PWD={pw}" % fileMDB
con = odbc.connect(param)

Я получаю следующую ошибку:

pyodbc.Error: ('HY000', '[HY000] [Microsoft] [Pilote ODBC Microsoft Access] Неверное имя файла. (-1044) (SQLDriverConnect); [HY000] [Microsoft] [Pilote ODBC Microsoft Access] Неверное имя файла. (- 1044) ')

Проблема, похоже, связана с именем файла базы данных с символом. Насколько я понимаю, строка и юникод fileMDB - это строка, закодированная в latin-1. Поскольку мой компьютер работает с кодировкой latin-1, я не понимаю, почему имя файла неверное.

Я работаю с Windows XP и python 2.7.

Спасибо за помощь!


person user2661075    schedule 07.08.2013    source источник


Ответы (1)


Похоже, что pyodbc пытается преобразовать строку подключения в 'ascii', поэтому любые символы выше 0x7F недействительны:

con = pyodbc.connect(param)

UnicodeDecodeError: кодек ascii не может декодировать байт 0xfb в позиции 84: порядковый номер не в диапазоне (128)

Однако мне удалось заставить его работать, используя pypyodbc:

# -*- coding: cp1252 -*-
import pypyodbc
fileMDB = r'C:\__tmp\test\Archives_PrevisionsESP_Août_2013.mdb'
param = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileMDB
con = pypyodbc.connect(param)
print 'Connection established.'
person Gord Thompson    schedule 08.11.2013