私は、とりわけ、Oracleデータベースからデバイスのリストを取得し、各デバイスで何らかの処理を行うpythonスクリプトを作成することになっています。これの大半は簡単です。問題が発生している場所はOracleデータベースに接続しています。Oracle DBの接続はperlで動作し、Pythonでどのように複製するのですか?
私は、同じデータベースに接続するために動作するperlスクリプトを持っていますが、これを同等のPythonコードに変換することはできません。使用されている
いくつかの詳細...
Perlモジュールは、以下のとおりです。私は使用しています
DBI
DBD::Oracle
Pythonモジュールは、次のとおりです。
cx_Oracle
Perlはバージョン5.8.8とPythonですバージョン2.7.2です。これはすべてCentOSのLinuxボックスで実行されています。 Oracleデータベースはローカル・ホスト上にありません。
ここでは動作するperlコードがあります。ユーザー名/パスワードは、無実を保護するために変更されました。
sub dbConn($$$) {
# Set Oracle enviroment path information
$ENV{"LD_LIBRARY_PATH"} = "/usr/lib/oracle/11.2/client64/lib";
$ENV{"NLS_LANG"} = "ENGLISH_CANADA.AL32UTF8";
$ENV{"ORACLE_HOME"} = "/usr/lib/oracle/11.2/client64";
$ENV{"PATH"} = "/usr/lib/oracle/11.2/client64/bin:".$ENV{"PATH"};
# Get parameters passed to subroutine
my $db_pass = shift();
my $db_database = shift();
my $SID = shift();
# Connect to db
my $odbh = DBI->connect("DBI:Oracle:$SID",
$db_database,
$db_pass,
{
RaiseError => 1,
PrintError => 1,
AutoCommit => 0
}
) || die("FATAL ERROR:Unable to connect to the Database: $DBI::errstr");
# Return our database handle
return ($odbh);
sub dbDisco($) {
# Get parameter passed to subroutine
my $odbh = shift();
# Disconnect from DB
$odbh->disconnect;
}
sub loadDevices {
# Connect to database
my $odbh = dbConn("password", "username", "ENGPRD");
# Get device list
my @devices = dbGetDevices($odbh);
# Disconnect from FDB
dbDisco($odbh);
return (@devices);
}
ここでホストは指定されていませんが、perlは引き続きデータベースを検索して接続できます。
どのようにしてperlスクリプトが使用しているホスト(IP?)、ポートなどを見つけることができますか?どうすればpythonでperl dbConn関数を複製できますか?
洞察が得意です。
サブルーチンが呼び出されたときに、引数として渡されるなどのホストを支援すると思います。 pythonについては、これを参照してくださいhttp://stackoverflow.com/questions/372885/how-do-i-connect-to-a-mysql-database-in-python – Pradeep
ありがとう。私の最大の問題は、私はホストを知らないということです。 Perlはそれを必要としていないようです。接続には 'DBI:Oracle:ENGPRD'を使います。これをPythonで使用するためにホストに変換するにはどうすればよいですか? – Calab