0

システムにある .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を使用しています

4

1 に答える 1

2

この情報はhttp://www.easysoft.com/developer/interfaces/odbc/linux.htmlから取得します

この場合、unixODBC は DSN "dsn_does_not_exist" を見つけることができなかったため、ODBC ドライバーをロードできませんでした。このエラーの一般的な理由は次のとおりです。

DSN「dsn_does_not_exist」が USER または SYSTEM ini ファイルに存在しません。

DSN "dsn_does_not_exist" は定義済みの ini ファイルに存在しますが、どの ODBC ドライバーをロードするかを unixODBC ドライバー マネージャーに伝える "Driver=xxx" 属性が省略されています。

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 を再実行する必要があります。

于 2012-07-27T09:54:47.060 に答える