本章我们将介绍 Perl DBI 模块和 SQLite 数据库,我们将提供一些定义并显示如何安装必要的元素。
先决条件
要使用本教程,我们必须安装 Perl 语言,SQLite 数据库,sqlite3
命令行工具,Perl DBI
和DBD::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 = ok,false = error) |
$rv |
一般返回值(通常为整数) |
@ary |
从数据库返回的值列表,通常是一行数据 |
$rows |
处理的行数(如果可用,否则为-1) |
$fh |
文件句柄 |
undef |
NULL 值由 Perl 中的未定义值表示 |
\%attr |
引用传递给方法的属性值的哈希 |
SQLite Perl 教程的这一章介绍了 Perl DBI 模块和 SQLite 数据库。