如何使用latin-1文件名连接到pyodbc访问(.mdb)数据库

时间:2013-08-07 14:39:20

标签: python python-2.7 character-encoding pyodbc pypyodbc

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

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

我使用Windows XP和python 2.7。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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.'