萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> 資料庫綜合

Perl 連接 MySQL 實戰:DBI 模組完整範例與最佳實踐

從安裝到 CRUD 操作的完整流程

Perl 透過 DBI (Database Interface) 模組配合 DBD::mysql 驅動,即可高效操作 MySQL。本文提供標準連線範本與核心操作示範。

環境準備

# Ubuntu/Debian
sudo apt-get install libdbi-perl libdbd-mysql-perl

# CentOS/RHEL
sudo yum install perl-DBI perl-DBD-MySQL

# CPAN 通用安裝
cpan DBI DBD::mysql

標準連線範本

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

# 連線參數
my $dsn = "DBI:mysql:database=eygle;host=localhost;port=3306";
my $user = "username";
my $pass = "password";

# 建立連線 (RaiseError 自動拋出異常)
my $dbh = DBI->connect($dsn, $user, $pass, {
    RaiseError => 1,
    PrintError => 0,
    AutoCommit => 1,
    mysql_enable_utf8 => 1
}) or die "連線失敗: $DBI::errstr";

print "連線成功!\n";

# 1. 插入資料 (do 適用非查詢)
my $rows = $dbh->do("INSERT INTO test (id, name) VALUES (1, 'eygle')");
print "插入 $rows 筆資料\n";

# 2. 查詢資料 (prepare/execute/fetch 循環)
my $sth = $dbh->prepare("SELECT name FROM test");
$sth->execute();

while (my $ref = $sth->fetchrow_hashref()) {
    print "Name: $ref->{name}\n";
}
$sth->finish();

# 3. 更新與刪除同樣用 do 或 prepare/execute
# $dbh->do("UPDATE test SET name='new' WHERE id=1");

# 關閉連線
$dbh->disconnect();
print "斷開連線\n";

關鍵最佳實踐

  • 預處理語句:`prepare` + `execute` 防 SQL 注入,重複執行效能更好
  • 錯誤處理:啟用 `RaiseError` 配合 `eval` 塊捕獲異常
  • 交易控制:`AutoCommit => 0` 後手動 `$dbh->commit()` / `$dbh->rollback()`
  • 編碼設定:`mysql_enable_utf8 => 1` 確保 UTF-8 正確存取
  • 連線池:長運行程序建議使用 `DBIx::Connector` 或 `DBI::Pool` 管理連線

進階技巧

大量匯入資料時,可用 `$dbh->begin_work` 開啟交易,批次 `execute` 後一次 `commit`,並暫時關閉索引 (`ALTER TABLE ... DISABLE KEYS`) 大幅提升速度。

copyright © 萬盛學電腦網 all rights reserved