我正在尝试访问位于我系统上的.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
任何人都可以告诉我这里有什么问题
答案 0 :(得分:2)
我从http://www.easysoft.com/developer/interfaces/odbc/linux.html
获取此信息在这种情况下,unixODBC无法找到DSN“dsn_does_not_exist”,因此无法加载ODBC驱动程序。此错误的常见原因是:
您的USER或SYSTEM ini文件中不存在DSN“dsn_does_not_exist”。
DSN“dsn_does_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。