2005/06/29 更新
Windows 2000 + Oracle 9i Release2 (9.0.2) に、Oracleの
モジュール& Product をインストールした時のメモです。
特に、Linux/Solaris 用の配慮をした記述をしていないので、Windows以外の人にはあまり参考にならないかも知れません。
http://www.zope.org/Members/matt/dco2 からアーカイブをダウンロードしてきます。
特定プラットフォーム用のアーカイブというのはなくて、ひとつのアーカイブの中に、いろいろなプラットフォーム用のバイナリが入っているようです。私は、DCOracle2-1_3b.zip を落としました。
落としてきたアーカイブを解いて、DCO2 というフォルダを ZOracleDA という名前に変えて、 site-packages にコピーします。
環境変数 ORACLE_HOME が設定されていない場合、設定します。
| C:\Zope\lib\python\Prodcuts\ZOracleDA>SET ORACLE_HOME=C:\oracle\ora92 |
(Windows の場合、ここで設定する値が何で合っても、結局レジストリから取得する模様)
次に、install.py を実行します。
| C:\Zope\lib\python\Prodcuts\ZOracleDA>..\..\..\..\bin\python install.py |
Zopeで Oracle の DA が使えればよいのであれば、これでおしまい。
ExternalMethod等から、DCOracle2 (Pythonの DB module)を使えるようにするには、 $(INSTANCE_HOME)/lib/python/Products/ZOracleDA にある DCOracle2 を $(INSTANCE_HOME)/lib/python に移動します。(別途インストールした Pythonから Zopeを起動するのであれば、そちらに)
connect のパラメータは 'user/password@TNS' で指定します。
使い方は、こんな感じ
| C:\>python Python 2.1.3 (#35, Apr 8 2002, 17:47:50) [MSC 32 bit (Intel)] on win32 Type "copyright", "credits" or "license" for more information. >>> import DCOracle2 >>> conn = DCOracle2.connect("scott/tiger@ora92") >>> cur = conn.cursor() >>> cur.execute("select * from emp") 1 >>> cur.fetchone() [7369, 'SMITH', 'CLERK', 7902, OracleDate("1980-12-17 00:00:00"), 800.0, None, 20] >>> |
こちらは、Python module で、Zopeの DAはありません。
また、Pythonのインストールパスを、レジストリから取得するので、Zopeに同梱されている
Pythonにインストールできません。
逆に、インストーラーからインストールした Pythonには、cx_Oracle
のインストーラーを実行するだけで、自動的にインストールできます。
ですので、気をつけるのは、Pythonのバージョンにあったものをダウンロードすることくらいでしょうか。
connect のパラメータは 'user/password@TNS' で指定します。
使い方は、こんな感じ
| C:\oracle\ora92>python Python 2.1.3 (#35, Apr 8 2002, 17:47:50) [MSC 32 bit (Intel)] on win32 Type "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>> conn = cx_Oracle.connect("scott/tiger@ora92") >>> cur = conn.cursor() >>> cur.execute("select * from emp") [<NumberVar object at 0131EDD0>, <StringVar object at 0094EC00>, <StringVar object at 0094EB70>, <NumberVar object at 0131EE28>, <DateTimeVar object at 0094EB28 >, <NumberVar object at 0131EE80>, <NumberVar object at 0131EED8>, <NumberVar object at 0131EF30>] >>> cur.fetchone() (7369, 'SMITH', 'CLERK', 7902, 1980-12-17 00:00:00, 800.0, None, 20) >>> |
とにかく、何でもいれちゃえ!っと「 Enterprise Edition」 で「汎用目的」でインストールすると以下のサービスが自動に設定される。(Oracle Home名が OraHOme92、SIDが XXXXの場合)
このうち、以下のサービスはいらないので停止してよい
ただし、存在したり、デフォルトで自動になっているサービスは、Oracle のバージョンによってもころころ変わるらしい。