在 linux 系统中连接 mdb 数据库,直接连接的话,mdb 默认的驱动无法识别非 windows 的路径, 所以不能使用常规的连接方式
DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\dir\\file.mdb
安装
这里我们需要借助一些库来实现第三方的驱动
我们需要安装这些包:mdbtools, unixODBC, libmdbodbc
如果是支持 deb 的系统中,如果不能找到 libmdbodbc ,将以下路径加入到软件源列表中
deb http://ftp.de.debian.org/debian squeeze main
更新源后即可可以安装 libmdbodbc 了
配置
安装了需要的包后,需要做一些配置,才能支持 libmdbodbc 的驱动
复制代码 代码如下:
/etc/odbcinst.ini</p><p>[MDBToolsODBC]<br />Description = MDB Tools ODBC<br />Driver = /usr/lib/libmdbodbc.so.0<br />Setup =<br />FileUsage =<br />CPTimeout =<br />CPReuse =</p></p><p>/etc/odbc.ini 或者 ~/.odbc.ini</p><p><div class="codetitle"><span><U>复制代码</U></span> 代码如下:</p><pre class="prettyprint">[test]<br />Description = Microsoft Access Try DB<br />Driver = MDBToolsODBC<br />Database = /path/to/mdb/file/test.mdb<br />Servername = localhost<br />Username =<br />Password =<br />port = 5432</p></p><p><strong>代码</strong></p><p>配置好数据源后,就可以用于任何支持 odbc 访问的应用中了,这里以 pyodbc 为例</p><div class="jb51code"><pre class="prettyprint linenums">#-*- coding: utf-8 -*-import pyodbcconn = pyodbc.connect('DSN=test');cursor = conn.cursor()cursor.execute('select * from "省"')for row in cursor.fetchall(): print row.Name
注:如果是操作名称中文的表或者字段等,需要将其包含在双引号中,不然会出错,当然,将表名做成中文这么二的做法, 还是不推荐使用的啦
pyodbc 是个很不错的库,api 也很好用,不过对中文支持的并不好,它并没有默认以 unicode 处理数据,本文来源gao@daima#com搞(%代@#码网所以对于中文相关的应用, 编码问题无处不在,只得慢慢折腾了。