标签 perl链接数据库 下的文章

Perl连接PostgreSQL数据库


变量名约定

以下设置了比较常用的变量名命名方法:

$dsn    驱动程序对象的句柄
$dbh    一个数据库对象的句柄
$sth    一个语句或者一个查询对象的句柄
$h      通用的句柄 ($dbh, $sth, 或 $drh),依赖于上下文
$rc     操作代码返回的布什值(true 或 false)
$rv     操作代码返回的整数值
@ary    查询返回的一行值的数组(列表)
$rows   操作代码返回的行数值
$fh     文件句柄
undef   NULL 值表示未定义
\%attr  引用属性的哈希值并传到方法上

数据库连接

#!/usr/bin/perl

use DBI;
use strict;

my $driver   = "Pg"; 
my $database = "testdb";
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432";  #这里要注意:;
my $userid = "admin";
my $password = "157359";
my $dbh = DBI->connect($dsn, $userid, $password) or die $DBI::errstr;

print "Opened database successfully\n";

DBI的API说明:

DBI->connect($data_source, "userid", "password", %attr)
建立数据库连接或会话,请求数据源。如果连接成功,则返回一个数据库句柄对象。

数据源的形式如 : DBI:Pg:dbname=$database;host=127.0.0.1;port=5432
PG是PostgreSQL驱动程序名称,testdb的数据库的名称。

在本机测试封装包的db_operate.pm:

#!/usr/bin/perl -w

use strict;
use DBI;

package sql;
sub execute {
        my $host = "localhost";
        my $driver = "Pg";
        my $database = "library";
        my $user = "admin";
        my $passwd = "157359";

        my $stmt = $_[0];
        my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432";;
        my $dbh = DBI->connect($dsn,$user,$passwd) or die $DBI::errstr;
        my $sth = $dbh->prepare($stmt);
        $sth->execute();

        my @array;
        while ( my @row = $sth->fetchrow_array() ) {
                push(@array,[@row]);
        }

        return @array;

        $sth->finish();
        $dbh->disconnect;

}
1;