【问题标题】:How to connect to access (.mdb) database with pyodbc using latin-1 filename如何使用 latin-1 文件名通过 pyodbc 连接到访问(.mdb)数据库
【发布时间】:2013-08-07 14:39:19
【问题描述】:

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

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    看来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.'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2021-10-10
      • 2019-04-15
      相关资源
      最近更新 更多