1

我正在运行 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)
4

0 回答 0