PythonでOracleに接続する
そーいえば真面目にやったことなかったのでメモ。
Oracle clientのダウンロード
とりあえずpure pythonでは動かないのでOracleのサイト
からclientをダウンロードする必要がある。
http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
とりあえずBasicをダウンロードする。
ダウンロードしたら解凍して適当な場所に置く。
(libclntsh.so.x.xって奴を使う)
環境変数
clientを置いた場所に環境変数を設定する
export ORACLE_HOME=解凍パス
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
とりあえず.soが見えればいい。
WIndowsの人は要らない。
cx_Oracleのダウンロード
実際のドライバであるcx_Oracleをダウンロードする。
ソースからビルドするには大変なのでバイナリで落とす。
Windowsはインストーラでインスコして終わりのはず。
自分でビルドしてるんだけどー
基本的に普通にインスコするとデフォルトのpython
(大体はpython2.5かな)
にインスコされてしまう。
だからといってソースからビルドするにはヘッダとか要るは
ずなのでメタクソめんどい。
僕の場合は/optにいろんなバージョンのpythonを入れてるの
でそいつでも使えるようにしたいわけ。
(僕の場合、メインはpython2.6のtrunk版)
基本的に使うだけならcx_Oracle.soをコピればいい。
Ubuntuだと
/usr/lib/python2.5/site-packages/
にcx_Oracle.soがいるのでピーコする。
使ってみる
dsnを渡さないといけない仕様っぽい。
dsnはmakedsnで作れる。
import cx_Oracle dsn = cx_Oracle.makedsn(host名, port_num, sidname) con = cx_Oracle.connect("scott", "tiger", dsn) cur = con.cursor() cur.execute("select * from TEST"); print cur.fetchall()
sqlalchmeyでは
create_engine("oracle://scott/tiger@dsn") create_engine("oracle://scott:tiger@host:port/sidname")
の2通り書ける。
sqlalchmeyが使えるようになるとテストデータの作成とかが
アホのように簡単になります。
Oracle使う案件というと多くはJavaを使う事が多いと思います
が、データをプログラムで組みながらと作りたいいった時にJa
vaだと正直しんどいです。
pythonをvimとかでササーと書いて、ササーと動かすと非常に
楽です。なので仕事でpython使いたいとかいう人はこーいったケ
ースでもpythonを使ってみてはいかがでしょうか。