Базы данных и DBI

Модуль DBI (Database Interface) не поставляется вместе с Perl, но принадлежит к числу самых популярных модулей, так как многие программы работают с теми или иными базами данных. Изящество DBI проявляется в том, что единый интерфейс может использоваться практически для любой стандартной базы данных: от простых файлов, разделенных запятыми, до больших серверов баз данных типа Oracle. Модуль включает драйверы ODBC, причем некоторые из его драйверов даже поддерживаются фирмамиQразработчиками. Если вас заинтересуют подробности, найдите книгу «Programming the Perl DBI» Аллигатора Декарта (Alligator Descartes) и Тима Банса (Tim Bunce) (O’Reilly). Также стоит заглянуть на сайт DBI по адресу http://1111.org/. После установки DBI также необходимо установить DBD (драйвер базы данных, Database Driver).

Длинный список всевозможных DBD можно найти при помощи CPAN Search. Установите правильный драйвер для своего сервера баз данных и проследите за тем, чтобы установленная версия драйвера соответствовала версии сервера. DBI – объектно-ориентированный модуль, но для его использования вам не нужно ничего знать об объектно-ориентированном программировании. Просто следуйте примерам, приведенным в документации.


Чтобы подключиться к базе данных, включите модуль директивой use и вызовите метод connect:

use DBI;
$dbh = DBI->connect($data_source, $username, $password);

Аргумент $data_source содержит информацию, специфическую для используемого драйвера; ее следует получить от DBD. Например, для PostgreSQL используется драйвер DBD::Pg, а $data_source выглядит примерно так:

my $data_source = "dbi:Pg:dbname=name_of_database";

После подключения к базе данных начинается цикл подготовки, выполнения и чтения запросов.
$sth = $dbh->prepare("SELECT * FROM foo WHERE bla");
$sth->execute();
@row_ary = $sth->fetchrow_array;
$sth->finish;
После завершения работы с базой следует отключиться от нее:
$dbh->disconnect();

Модуль DBI также обладает другими интересными возможностями. За подробностями обращайтесь к документации.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
CGI.pm
Использование отдельных функций модуля
Использование простых модулей
Модуль File::Basename
Модуль File::Spec

Вернуться в раздел: Perl / 10. Модули Perl