跳转至

Perl DBI

原文: http://zetcode.com/db/sqliteperltutorial/dbi/

在 SQLite Perl 教程的第一章中,我们将介绍 Perl DBI 模块和 SQLite 数据库。 我们将提供一些定义并显示如何安装必要的元素。

先决条件

要使用本教程,我们必须安装 Perl 语言,SQLite 数据库,sqlite3命令行工具,Perl DBIDBD::SQLite模块。 DBI是标准的 Perl 数据库接口。 每个数据库都有其驱动程序。 在我们的例子中,DBD::SQLite是 SQLite 数据库的驱动程序。

$ sudo perl -MCPAN -e shell
cpan> install DBI
cpan[2]> install DBD::SQLite

上面的命令显示了如何安装 Perl DBI 和DBD::SQLite模块。

SQLite 数据库

SQLite 是嵌入式关系数据库引擎。 它是一个自包含,无服务器,零配置和事务型 SQL 数据库引擎。 SQLite 实现了 SQL 的大多数 SQL-92 标准。 SQLite 引擎不是独立的进程。 而是将其静态或动态链接到应用。 SQLite 数据库是单个普通磁盘文件,可以位于目录层次结构中的任何位置。

SQLite 附带sqlite3命令行工具。 它可用于对数据库发出 SQL 命令。 现在,我们将使用sqlite3命令行工具创建一个新数据库。

$ sqlite3 test.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

我们为sqlite3工具提供了一个参数。 test.db是数据库名称。 它是我们磁盘上的单个文件。 如果存在,则将其打开。 如果不是,则创建它。

sqlite> .tables
sqlite> .exit
$ ls
test.db

.tables命令提供了test.db数据库中的表列表。 当前没有表。 .exit命令终止sqlite3命令行工具的交互式会话。 ls Unix 命令显示当前工作目录的内容。 我们可以看到test.db文件。 所有数据将存储在该单个文件中。

Perl DBI

Perl DBI(数据库接口)是 Perl 编程语言的数据库访问模块。 它定义了一组提供标准数据库接口的方法,变量和约定。 DBI还负责驱动程序的动态加载,错误检查和处理,提供方法的默认实现以及许多其他非数据库特定的职责。 DBI将方法调用分派到适当的数据库驱动程序。 DBD(数据库驱动程序)是一个 Perl 模块,可为特定的数据库引擎转换DBI方法。 数据库驱动程序由数据库供应商提供。

#!/usr/bin/perl

use strict;
use DBI;

my @ary = DBI->available_drivers();
print join("\n", @ary), "\n";

该代码示例列出了系统上所有可用的驱动程序。

use DBI;

我们为脚本导入 DBI 模块。

my @ary = DBI->available_drivers();

available_drivers()类方法获取系统上所有当前可用的驱动程序。

print join("\n", @ary), "\n";

此行将驱动程序打印到控制台,每个驱动程序都在单独的行上。

$ ./available_drivers.pl
DBM
ExampleP
File
Gofer
Proxy
SQLite
Sponge
mysql

示例输出。

常见的 DBI 方法

下表列出了一些常见的 DBI 方法。

方法名称 描述
available_drivers() 返回所有可用驱动程序的列表
connect() 建立与请求的数据源的连接
disconnect() 与数据库服务器断开连接
prepare() 准备要执行的 SQL 语句
execute() 执行预备语句
do() 准备并执行一条 SQL 语句
bind_param() 在预备语句中将值与占位符关联
bind_col() 将 Perl 变量绑定到SELECT语句的输出字段
begin_work() 开始新事务
commit() 将最新的一系列未提交的数据库更改写入数据库
rollback() 撤消最近一系列未提交的数据库更改
quote() 引用字符串字面值,以用作 SQL 语句中的字面值
dump_results() 获取所有行并打印
fetchrow_array() 获取下一行作为字段数组
fetchrow_arrayref() 获取下一行作为字段的引用数组
fetchrow_hashref() 获取下一行作为对哈希表的引用
fetchall_arrayref() 以数组的形式获取所有数据
finish() 完成声明并让系统释放资源
rows() 返回受影响的行数
column_info() 提供有关列的信息
table_info() 提供有关表的信息
primary_key_info() 提供有关表中主键的信息
foreign_key_info() 提供有关表中外键的信息

约定

在使用 Perl DBI 时,Perl 程序员通常使用以下变量名。 在本教程中,我们也将遵守这些约定。

变量名 描述
$dbh 数据库句柄对象
$sth 语句句柄对象
$drh 驱动程序句柄对象(在应用中很少见或使用)
$h 上面的任何句柄类型($dbh$sth$drh
$rc 通用返回码(布尔值:true = okfalse = error
$rv 一般返回值(通常为整数)
@ary 从数据库返回的值列表,通常是一行数据
$rows 处理的行数(如果可用,否则为 -1)
$fh 文件句柄
undef NULL 值由 Perl 中的未定义值表示
\%attr 引用传递给方法的属性值的哈希

SQLite Perl 教程的这一章介绍了 Perl DBI 模块和 SQLite 数据库。



回到顶部