在Python中复制Perl-Oracle数据库连接

2024-09-28 05:41:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是创建一个Python脚本,从Oracle数据库中获取设备列表,并对每个设备进行处理。这其中的大部分都很简单,但我遇到的问题是连接到Oracle数据库。你知道吗

我有一个连接到同一个数据库的Perl脚本,但我无法将其转换为等效的Python代码。你知道吗

DBIDBD::OraclePerl模块正在使用中,我正在使用cx_OraclePython模块。你知道吗

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函数?你知道吗

任何见解都是值得赞赏的。你知道吗


Tags: topathenv脚本数据库dbshiftmy

热门问题