NAME
PDK::DBI::Pg - PostgreSQL 数据库操作类
SYNOPSIS
use PDK::DBI::Pg;
my $db = PDK::DBI::Pg->new(
host => '127.0.0.1',
port => 5432,
dbname => 'testdb',
user => 'postgres',
password => 'secret',
);
# 单条插入
$db->insert('users', { name => 'alice', age => 20 });
# 查询
my $rows = $db->select(table => 'users')->all;
# 批量插入
my $params = [
[1, 'bob'],
[2, 'charlie'],
];
$db->batchExecute($params, 'insert into users(id, name) values (?, ?)');
DESCRIPTION
该模块基于 DBIx::Custom 封装,继承 PDK::DBI::Role, 提供了 PostgreSQL 数据库的连接、批量执行、事务管理等功能。
对常见的 insert
、update
、delete
、execute
方法进行了事务封装, 执行成功后自动提交,出错时自动回滚并抛出异常。
ATTRIBUTES
- dsn
-
数据库连接字符串,例如:
dbi:Pg:dbname=test;host=localhost;port=5432
- user
-
数据库用户名。
- password
-
数据库密码。
- host
-
主机名。如果未提供 dsn,可以通过 host/port/dbname 自动拼接。
- port
-
端口号,默认 5432。
- dbname
-
数据库名。
- option
-
哈希引用,数据库连接选项。 默认值为:
{ AutoCommit => 0, RaiseError => 1, PrintError => 0, }
- dbi
-
DBIx::Custom
对象。 提供select
、update
、insert
、delete
、execute
等方法的委托调用。
METHODS
clone()
克隆当前数据库对象,复制其连接参数,返回新对象。
batchExecute(\@params, $sql)
批量执行 SQL 语句。 内部调用 _rawExecute
,适合大批量插入或复杂 SQL 的执行。
_rawExecute(\@params, $sql)
低层批量执行方法。 每 5000 条数据提交一次事务,以减少大事务对性能和内存的影响。
disconnect()
断开数据库连接。
reconnect()
重新建立数据库连接。 等价于先执行 disconnect
,再调用内部的 _buildDbi
。
_buildDbi()
内部方法,用于构建 DBIx::Custom
对象。 会根据配置生成数据库连接,并应用默认或用户自定义的选项。
ERROR HANDLING
所有数据库操作均在事务中执行,出错时会自动回滚。
执行失败时,会抛出 Carp::confess 异常,并包含错误信息。
EXAMPLES
use PDK::DBI::Pg;
my $db = PDK::DBI::Pg->new(
host => '127.0.0.1',
port => 5432,
dbname => 'testdb',
user => 'postgres',
password => 'secret',
);
eval {
$db->insert('users', { name => 'alice', age => 20 });
};
if ($@) {
warn "数据库操作失败: $@";
}
AUTHOR
WENWU YAN <968828@gmail.com>
LICENSE AND COPYRIGHT
This software is licensed under the same terms as Perl itself.