我正在尝试访问位于我的系统上的.mdb文件。我的代码看起来像这样:
import csv
import pyodbc
MDB = '/home/filebug/client/my.mdb'
DRV = '{Microsoft Access Driver (*.mdb)}'
PWD = 'mypassword'
conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD))
print conn
curs = conn.cursor()
SQL = 'SELECT * FROM InOutTable;' # insert your query here
curs.execute(SQL)
rows = curs.fetchall()
curs.close()
conn.close()
但我面临以下错误:
Traceback (most recent call last):
File "mdb.py", line 8, in <module>
conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD))
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
我的系统上安装了pyodbc-3.0.6-py2.7-linux-i686.egg
。使用Ubuntu 12.04有人能告诉我这里出了什么问题吗?
我从http://www.easysoft.com/developer/interfaces/odbc/linux.html
在这种情况下,unixODBC无法找到DSN"DSN_doe_not_exist",因此无法加载ODBC驱动程序。此错误的常见原因有:
DSN"DSN_doe_not_exist"在USER或SYSTEM ini文件中不存在。
DSN"DSN_doe_not_exist"确实存在于定义的ini文件中,但您忽略了"Driver=xxx"属性,该属性告诉unixODBC驱动程序管理器要加载哪个ODBC驱动程序。
odbcinst.ini文件中的"Driver=/path_to_Driver"指向无效路径、指向部分路径不可读/不可搜索的可执行文件的路径或指向不可加载(可执行)的文件。
Driver=xxx条目指向一个共享对象,该对象不导出必要的ODBC API函数(您可以使用unixODBC.附带的dltest对此进行测试
odbcinst.ini文件中driver=xxx定义的ODBC驱动程序依赖于不在动态链接器搜索路径上的其他共享对象。在odbcinst.ini文件中,对driver=命名的驱动程序共享对象运行ldd,查看找不到哪些依赖的共享对象。如果找不到某些路径,则需要定义LD_LIBRARY_PATH环境变量来定义到任何依赖共享对象的路径,或者将这些路径添加到/etc/LD.so.conf并重新运行ldconfig。