7.2.3 Oracle Databaseへの接続
oml.connect
を使用してオンプレミスOracleデータベースへのOML4Py接続を確立します。
oml.connect
関数は、オンプレミスOracleデータベース内のユーザーのスキーマへの接続を確立します。
oml.connect
関数の構文は次のとおりです。
oml.connect(user=None, password=None, host=None, port=None, sid=None,
service_name=None, dsn=None, encoding=’UTF-8’, nencoding=’UTF-8’, automl=None)
データベースへの基本的な接続を作成するには、次の相互に排他的な組合せでoml.connect
関数の引数を指定できます。
user
、password
、dsn
user
、password
、host
、port
、sid
user
、password
、host
、port
、service_name
引数では、次の値を指定します
表7-2 oml.connectのパラメータ
パラメータ | 説明 |
---|---|
user |
ユーザー名を指定する文字列。 |
password |
ユーザーのパスワードを指定する文字列。 |
host |
OML4Pyサーバーがインストールされているホスト・マシンの名前を指定する文字列。 |
port |
ホスト・マシンのOracleデータベース・ポート番号を指定するint または文字列。
|
sid |
Oracleデータベースのシステム識別子(SID)を指定する文字列。 |
service_name |
Oracleデータベースのサービス名を指定する文字列。 |
dsn |
データ・ソース名を指定する文字列。データベースのTNSエントリまたはOracleウォレットでのTNS別名を指定できます。 |
encoding |
通常のデータベース文字列に使用するエンコーディングを指定する文字列。 |
nencoding |
各国語文字セットのデータベース文字列に使用するエンコーディングを指定する文字列。 |
automl |
自動機械学習(AutoML)接続を有効にするかどうかを指定する文字列またはブールで、データベース常駐接続プールを使用します。
ホスト、ポート、SID (またはサービス名)について実行されている接続プールがある場合は、そのホスト、ポート、SID (またはサービス名)および
|
OML4PyのAutoML機能を使用するには、次を満たす必要があります。
- サーバーで接続プールが実行されている必要があります。
- サーバーで実行されている接続プールを指定するには、
oml.connect
呼出しでautoml
引数を明示的に使用する必要があります。
ノート:
AutoML接続を作成するには、データベース管理者がまず、次のSQL文を発行して、オンプレミスOracleデータベースでデータベース常駐接続プールをアクティブにする必要があります。EXECUTE DBMS_CONNECTION_POOL.START_POOL();
起動したら、データベース管理者が次のコマンドを発行して明示的に停止するまで、接続プールはこの状態のままです。
EXECUTE DBMS_CONNECTION_POOL.STOP_POOL();
アクティブなOML4Py接続がPythonセッション中に同時に存在できるのは、1つのみです。アクティブな接続がすでに存在するときにoml.connect
をコールすると、oml.disconnect
関数が暗黙的に呼び出され、前のセッションで作成した一時オブジェクトが破棄され、新しい接続が確立されます。接続を試みる前に、oml.isconnected
関数を使用してアクティブな接続が存在するかどうかを把握できます。
oml.disconnect
関数を使用して明示的に接続を終了します。oml.disconnect
を呼び出さない場合は、Pythonセッションの終了時に接続が自動的に終了されます。
例
次の例では、oml.connect
関数の一部の引数の値は、例で宣言されていない文字列変数です。次の例のいずれかを使用するには、ユーザー名、パスワード、ポートおよび可変引数値をユーザーおよびデータベースの値に置き換えます。
例7-1 ホスト、ポートおよびSIDによる接続
この例では、host
、port
およびsid
引数を使用します。また、oml.isconnected
、oml.check_embed
およびoml.disconnect
関数の使用も示しています。
import oml
oml.connect(user='oml_user', password='oml_user_password', host='myhost',
port=1521, sid='mysid')
# Verify that the connection exists.
oml.isconnected()
# Find out whether Embedded Python Execution is enabled in the
# database instance.
oml.check_embed()
# Disconnect from the database.
oml.disconnect()
# Verify that the connection has been terminated.
oml.isconnected()
この例のリスト
>>> import oml
>>>
>>> oml.connect(user='oml_user', password='oml_user_password', host='myhost',
... port=1521, sid='mysid')
>>>
>>> # Verify that the connection exists.
... oml.isconnected()
True
>>>
>>> # Find out whether Embedded Python Execution is enabled in the
... # database instance.
... oml.check_embed()
True
>>>
>>> # Disconnect from the database.
... oml.disconnect()
>>>
>>> # Verify that the connection has been terminated.
... oml.isconnected()
False
例7-2 ホスト、ポートおよびサービス名による接続
この例では、host
、port
およびservice_name
引数を使用します。
import oml
oml.connect(user='oml_user', password='oml_user_password', host='myhost',
port=1521, service_name='myservice')
例7-3 SIDが含まれるDSNによる接続
この例では、dsn
引数を使用してSIDを指定します。
import oml
mydsn = "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=1521))\
(CONNECT_DATA=(SID=mysid)))"
oml.connect(user='oml_user', password='oml_user_password', dsn=mydsn)
例7-4 サービス名が含まれるDSNによる接続
この例では、dsn
引数を使用してサービス名を指定します。
import oml
myinst = "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)\
(PORT=1521))\
(CONNECT_DATA=(SERVICE_NAME=myservice.example.com)))"
oml.connect(user='oml_user', password='oml_user_password', dsn=myinst)
例7-5 DSNによる、AutoMLが有効になっている接続の作成
この例では、AutoMLが有効になっているOML4Py接続を作成します。この例では、ローカル・データベースに接続します。
import oml
mydsn = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)\
(PORT=1521))(CONNECT_DATA=(SID=mysid)))"
dsn_pool = "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)\
(PORT=1521))\
(CONNECT_DATA=(SERVICE_NAME=myservice.example.com)\
(SERVER=POOLED)))"
oml.connect(user='oml_user', password='oml_user_password',
dsn=mydsn, automl=dsn_pool)
# Verify that the connection exists and that AutoML is enabled.
oml.isconnected(check_automl=True)
例7-6 Oracleウォレットによる接続
この例では、dsn
引数を使用してOracleウォレットを指定し、接続を作成します。dsn
値(この例ではwaltcon
)は、ウォレットで適切な資格証明を作成するために使用されたデータベースのtnsnames.ora
ファイル内の別名を参照する必要があります。
import oml
oml.connect(user='', password='', dsn='waltcon')
関連項目:
Oracleウォレットについて例7-7 Oracleウォレットによる、AutoMLが有効になっている接続
この例では、Oracleウォレットを使用して接続し、dsn
およびautoml
引数を使用してAutoMLが有効になっている接続を確立します。この例では、接続でAutoMLが有効になっていることを確認します。dsn
およびautoml
の値(この例ではwaltcon
およびwaltcon_pool
)は、ウォレットで適切な資格証明を作成するために使用されたデータベースのtnsnames.ora
ファイル内の別名を参照する必要があります。
import oml
oml.connect(user='', password='', dsn='waltcon', automl='waltcon_pool')
oml.isconnected(check_automl=True)