このエントリーをはてなブックマークに追加


PerlでPostgreSQLにアクセスできるようにする・CentOS

PerlでPostgreSQLにアクセスするには、PostgreSQL用のDBDとperl-DBIをインストールする必要があります。
本資料は、CentOS6でPerlによるPostgreSQLのアクセスをするためにPerlモジュールDBI/DBDのインストール方法と簡単なサンプルコードを記します。

関連資料

DBI/DBDとは

DBIとは、DataBase Interfaceの略語になります。
DBDとは、DataBase Driverの略語になります。
したがって、DBDは各データベース毎に用意されています。
たとえば、PostgreSQLの場合は、perl-DBD-Pgパッケージ, MySQLの場合は、perl-DBD-MySQLパッケージになります。
DBIは、Perlからデータベースを操作するためのAPIになります。

PostgreSQLを操作するために必要なDBIとDBDモジュールをインストール

rootになり、以下のコマンドでDBIとDBDをインストールします。

yum -y install perl-DBI perl-DBD-Pg

以下、インストールしたときの出力です。

# yum -y install perl-DBI perl-DBD-Pg
Loaded plugins: fastestmirror
Determining fastest mirrors
<snip>
Setting up Install Process
Package perl-DBI-1.609-4.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package perl-DBD-Pg.x86_64 0:2.15.1-4.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================
 Package                       Arch                     Version                             Repository                 Size
============================================================================================================================
Installing:
 perl-DBD-Pg                   x86_64                   2.15.1-4.el6_3                      updates                   196 k

Transaction Summary
============================================================================================================================
Install       1 Package(s)

Total download size: 196 k
Installed size: 544 k
Downloading Packages:
perl-DBD-Pg-2.15.1-4.el6_3.x86_64.rpm                                                                | 196 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : perl-DBD-Pg-2.15.1-4.el6_3.x86_64                                                                        1/1 
  Verifying  : perl-DBD-Pg-2.15.1-4.el6_3.x86_64                                                                        1/1 

Installed:
  perl-DBD-Pg.x86_64 0:2.15.1-4.el6_3                                                                                       

Complete!

perl-DBIですが、既にインストールされていました。(Package perl-DBI-1.609-4.el6.x86_64 already installed and latest version)

テストしたPostgreSQLの環境

以下の設定で環境を構築しました。

  • pg_hba.conf抜粋
    パスワード認証を必要としてあります。
    # IPv4 local connections:
    host    all         all         127.0.0.1/32          md5
  • ユーザの追加
    postgresユーザにsuし、sakuraユーザを追加しパスワードを設定しました。
    -bash-4.1$ createuser -P sakura
    新しいロールのパスワード:
    もう一度入力してください:
    新しいロールをスーパーユーザとしますか?  (y/n)y

PerlでPostgreSQLに接続してみる

以下にPerlによるPostgreSQLアクセスの簡単なサンプルコードを記します。

  • サンプルコード
    #!/usr/bin/perl
    
    use DBI;
    
    # PostgreSQL
    our $DB_NAME = "postgres";
    our $DB_USER = "sakura";
    our $DB_PASS = "sakura";
    our $DB_HOST = "127.0.0.1";
    our $DB_PORT = "5432";
    
    my $dbh = DBI->connect("dbi:Pg:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT","$DB_USER","$DB_PASS") or die "$!\n Error: failed to connect to DB.\n";
    my $sth = $dbh->prepare("SELECT now();");
    $sth->execute();
    while (my $ary_ref = $sth->fetchrow_arrayref) {
      my ($row) = @$ary_ref;
      print $row , "\n";
    }
    $sth->finish;
    $dbh->disconnect;
    
    1;
  • 実行結果 SELECT now(); が正常に動作しました。
    $ ./pg_connect.pl 
    2012-10-04 17:03:45.030885+09

以下のエラーが発生した場合は、DBI,DBDモジュールがインストールされていません。
上記の「PostgreSQLを操作するために必要なDBIとDBDモジュールをインストール」を参照してください。

$ ./pg_connect.pl 
install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/sh...

添付ファイル: filepg_connect.pl.zip 659件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00