我使用此代码连接到我的访问(.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。
感谢您的帮助!
答案 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.'