0

我使用此代码连接到我的访问 (.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章)

问题似乎来自带有 û 字符的数据库文件名。据我对字符串和 unicode 的理解,fileMDB 是以 latin-1 编码的字符串。因为,我的计算机使用 latin-1 编码运行,所以我不明白为什么文件名不正确。

我使用 Windows XP 和 python 2.7。

谢谢您的帮助!

4

1 回答 1

0

看来 pyodbc 试图将连接字符串转换为'ascii',因此 0x7F 以上的任何字符都是无效的:

con = pyodbc.connect(param)

UnicodeDecodeError:“ascii”编解码器无法解码位置 84 的字节 0xfb:序数不在范围内(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.'
于 2013-11-08T09:10:10.997 回答