如何让pyodbc从旧的MS Access数据库返回正确的值

时间:2012-04-13 14:18:12

标签: python ms-access ubuntu pyodbc

我正在运行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”,firstname和lastname为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,Windows 7上的pyodbc,64位(效果不错)

(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)

0 个答案:

没有答案