我的任务是创建一个Python脚本,从Oracle数据库中获取设备列表,并对每个设备进行处理。这其中的大部分都很简单,但我遇到的问题是连接到Oracle数据库。你知道吗
我有一个连接到同一个数据库的Perl脚本,但我无法将其转换为等效的Python代码。你知道吗
DBI
和DBD::Oracle
Perl模块正在使用中,我正在使用cx_Oracle
Python模块。你知道吗
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仍然可以找到并连接到数据库。你知道吗
我怎样才能找到什么主机(IP?),端口等。Perl脚本正在使用?如何在python中复制Perl dbConn函数?你知道吗
任何见解都是值得赞赏的。你知道吗
SID'INGPRD'指的是数据库名和实例号。我相信有个神谕tnsnames.ora公司标识这些的文件。你知道吗
我想这个链接会有帮助
http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
相关问题 更多 >
编程相关推荐