Python ibm_dbのインストール方法



PythonからIBMのDB2に接続するには、調べてみたところ
・mxODBCを使用する
・ibm_dbを使用する
という2つの方法があるようです。

最初、mxODBCで接続しようとしたのですが、


>>> import mx.ODBC
Traceback (most recent call last):
 File "", line 1, in ?
 File "mx\ODBC\__init__.py", line 39, in ?
 File "mx\ODBC\ODBC.py", line 18, in ?
ImportError: cannot import name license


というエラーが発生し、泣く泣くあきらめました。
・・・原因はいまだに不明です。


そこで、ibm_dbです。
http://pypi.python.org/pypi/ibm_db/


最初は簡単にインストールできるだろう。と思っていたのですが・・・
苦難の道のりでした。



■Python2.5が必用

まず、ibm_dbはPython2.4でビルドできませんでした。
CentOS5.2にインストールされているPythonのバージョンは2.4.3なので、
Pythonのバージョンアップが必用です。

※CentOSにnginx+mod_wsgiの環境を作るとき、Python2.5.xに
こだわった理由はこれです。



■ibm_dbのインストール

easy_installからインストールすると楽です。
※ソースからだと、sqlcli1.hというファイルを要求されます。



#wget http://peak.telecommunity.com/dist/ez_setup.py
#python ez_setup.py
#easy_install ibm_db


これでインストール完了です。

実際使おうとすると


#python
>>> import ibm_db
Traceback (most recent call last):
 File "", line 1, in
ImportError: libdb2.so.1: cannot open shared object file: No such file or directory


とエラーになります。

libdb2.so.1を認識させるため


#vi /etc/ld.so.conf.d/db2.conf
/opt/ibm/db2/V9.5/lib32

#設定反映
#ldconfig


これでibm_dbがインポートできるようになります。



【参考URL】
Python2.5をzlib付きでビルドしてインストール(アップグレード)する方法(linux)
IBM DB2、Cloudscape および Apache Derby 関数
「file is not a dynamic executable or shared object」とエラー表示される



※おまけ
ibm_dbをソースからインストールする場合
ibm_dbインストール時、sqlcli1.hというヘッダファイルを要求されます。
しかし、DB2をインストールしただけではこのファイルはインストールされません。
※インストール時にオプションの指定があるのかも。


無いものはしょうがないので、ダウンロードしてきます。

http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg21256051#r17



Application Development Clientをダウンロードします。
FP17_MI00248_ADCL.tarというファイルが落とせたら、
/workにコピーします。


#cd /work
#tar xvf FP17_MI00248_ADCL.tar
#cd adcl


このディレクトリにdb2setupがありますが、
なぜか起動してくれませんでした。

そのため、db2_installを実行しインストールします。


#./db2_install


以下のキーワードを 1 つ以上指定し、
スペースで区切って DB2 製品をインストールしてください。

キーワード 製品説明
DB2.ADCL DB2 Application Development Client for LINUX26

"ヘルプ" を入力して製品名を再表示してください。

"終了" を入力して終了してください。

***********************************************************


DB2.ADCLと入力し、エンターキーを入力すると
インストールが実行されます。

この操作で、
/opt/IBM/db2/V8.1/include/
にsqlcli1.hが配置されます。

環境変数を参照して、ヘッダファイルを探しにいくので


#vi ~/.bashrc

export IBM_DB_DIR=/opt/IBM/db2/V8.1/
export IBM_DB_LIB=/opt/ibm/db2/V9.5/lib32/


として、環境変数を足してやります。

こうして、

#python setup.py install



でインストールできるはず。



今思えば、DB2インストール時にカスタムを選択して、
ヘッダを入れればいいんじゃないか?と思いますが
追試する気力がありません・・・




もどる