3

私は組織全体の中央にマウントされたドライブに unixODBC がインストールされている環境で作業していますが、私たち (実際の開発者) はそこにドライバーやデータソースをインストールすることを許可されていません。それはすべて後ろ向きですが、私はそれと一緒に暮らす必要があります。

現在、この UNIX 環境から mssql 2005 サーバーに接続する python アプリを構築しようとしているので、明らかに SQL ドライバーが必要です!

完全に制御できるドライブの一部に unixODBC を再インストールすることで、プリインストールされた unixODBC にアクセスできないことを回避しました。freeTDS をインストールし、すべてを構成して、isql を使用してサーバーに正常に接続できるようにしました。

唯一の問題は、python プログラム (pyodbc を使用している) で次のような行を実行するときです。

import pyodbc
pyodbc.connect("DSN=<dsn_name>;UID=...;PWD=...", autocommit=True)

私は得る

 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

これは、pyodbc がまだ元の unixODBC インストールを探しており、ローカルの unixODBC インストールを探しているためだと思います。だから私は疑問に思っていました:

メイン ドライブにインストールされているものではなく、ローカルの unixODBC インストールを検索するようにスクリプトを構成するにはどうすればよいですか

4

3 に答える 3

6

pyodbc をカスタム セットアップにインストールするのは難しいです。setup.py次のようなものを追加して、カスタムの場所から unixODBC を探すようにスクリプトを編集する必要があります。

settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

機能するget_compiler_settings

于 2011-10-24T21:45:47.200 に答える
2

上記の回答に感謝します-setup.pyのget_compiler_settingsを編集して、デフォルトのiodbcを使用しないように指示しました。

私にとってうまくいったのは(OS X 10.9、pyodbc 3.0.7):

elif sys.platform == 'darwin':
    # OS/X now ships with iODBC.
    #settings['libraries'].append('iodbc')

    # but I don't want to use iodbc, I want to use brewed unixodbc 
    settings['libraries'].append('odbc')
于 2013-10-25T19:54:22.457 に答える
0

問題は、グローバルiniファイルを調べていることが原因である可能性があります。を定義することによりodbc.ini、ファイルを検索する場所を設定できますodbcinst.iniODBCSYSINI=/path/to/location/of/inifiles

于 2011-11-01T15:42:51.687 に答える