pyodbc中的国际字符 - ODBC python库

时间:2015-02-18 11:11:17

标签: database python libraries

我正在使用pyodbc连接到我的* .mdb文件并将它们存储在sqlite / spatialite数据库中以进行进一步的工作和分析。我这样通过DSN:

DSN="Driver={%s};DBQ=%s;"%(self.find_mdb_driver(),self.mdbPath)

然后:

conn = pyodbc.connect(DSN)

问题是,当我尝试使用国际字符传递路径时cp1250“čžš”我收到错误:

table=cursor.fetchall()
UnicodeEncodeError: 'ascii' codec can't encode character u'\u017e' in position 111: ordinal not in range(128)

这个问题有什么指针吗?

1 个答案:

答案 0 :(得分:0)

问题的最小例子:

# -*- coding: utf-8 -*-

import pyodbc

if __name__ == '__main__':

    DSN_1="Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\ep5065\Documents\GREDOS\Gredos 2015\Analize omrežja\Komen NOS 2015\Končno stanje\Analiza stanja Komen.mdb;"

    DSN_2="Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\ep5065\Documents\GREDOS\Gredos 2015\Gredos modeli\9_2_2015\EP_9_2_2015_v1.mdb;"
    conn = pyodbc.connect(DSN_1)
    cursor=conn.cursor()
    cursor.execute('select * from Branch')
    table=cursor.fetchall()

    for line in table:
        print line

如果我使用DSN_1,它会突然出现上述错误,如果我使用DSN_2,它会愉快地吐出表格内容。