我正在运行 64 位 Ubuntu 11.0、64 位 python 2.7.2 和 pyodbc 3.0.3。
我正在尝试从驻留在网络 Windows 机器上的旧访问数据库(我认为它是 97 但不是 100% 确定)中检索数据。
我运行以下选择,并显示结果:
select id, firstname, lastname from customer where id < 5
(id 是“Counter”类型,名字和姓氏是 varchar)
来自python,Ubuntu上的pyodbc(这里有问题):
(16973874, 'Candance\x00\x00', 'Mattingly\x00\x00')
(16973875, 'Anthony & Ana Marie\x00\x00', 'Cushing\x00&')
(16973876, 'Sharon\x00\x00', 'Brown\x00\x00')
来自 Ubuntu 上的 isql(良好的结果)(稍微重新格式化):
| 2 | Candance | Mattingly |
| 3 | Anthony & Ana Marie | Cushing |
| 4 | Sharon | Brown
从 python,pyodbc on Windows 7, 64bit (good results):
(2, u'Candance', u'Mattingly')
(3, u'Anthony & Ana Marie', u'Cushing')
(4, u'Sharon', u'Brown')
我的 odbc.ini 看起来与此类似:
[MSACCESS]
Description = Old MS Access Database
Driver = /usr/lib/libmdbodbc.so.0
Database = [path to mounted drive].mdb
基本上,pyodbc 在 Ubuntu 上返回不正确的结果(或错误地解释它们)。我很感激任何有用的建议来解决这个问题。
- 我尝试了许多添加“client charset = XXX”的变体,但它们似乎没有任何效果。
- 请注意,从 Ubuntu 上的 pyodbc 中,返回的“id”列太高了 16973872,并且 varchar 列似乎以半随机字节结尾(许多不是 \x00)