2013-08-07 3 views
0

Я использую этот код для подключения к доступу (.mdb) баз данных:Как подключиться к Access (.mdb) базы данных с использованием pyodbc Latin-1 файл

# -*- 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] Filename incorrect. (-1044) (SQLDriverConnect); [HY000] [Microsoft][Pilote ODBC Microsoft Access] Filename incorrect. (-1044)')

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

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

Благодарим за помощь!

ответ

0

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

con = pyodbc.connect(param) 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xfb in position 84: ordinal not in range(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.' 
Смежные вопросы