我正在使用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)
这个问题有什么指针吗?
答案 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,它会愉快地吐出表格内容。