Perl для системного администрирования



         

Использование DBI


Вот что следует делать для использования DBI. Информацию о самом DBI можно найти в книге «Programming the Perl DBI» Аллигатора Декарта (Alligator Descartes) и Тима Банса (Tim Bunce) (O'Reilly).

Шаг 1: Загрузите нужный модуль

Здесь нет ничего особенного, нужно лишь написать:

use DBI;

Шаг 2: Соединитесь с базой данных и получите дескриптор соединения

Код на Perl, устанавливающий DBI-соединение с базой данных MySQL и возвращающий дескриптор базы данных, выглядит примерно так:

соединиться с базой данных $database используя заданное имя

Sdatabas

$dbh = DBI-->comect("D8I:nysal :Sdatabase Saseriare $pw);

die "Онибка Н-'-юзмолно соединиться:

$dbh);

До соединения с сервером DBI загрузит низкоуровневый DBD-драйвер (DBD: :^ysc:!). Перед тем как двигаться дальше, проверим, что соединение (при помощи con пес: ()) установлено. DBI предоставляет два параметра для connect () - Raise-Error и Print Er , определяющие, будет ли DBI выполнять эту проверку или сообщит об ошибках, когда они возникнут. В частности, если применить:

$dbh = DBI->connect("DBI:mysql:$database",

$username,$pw,{RaiseError =

то DBI вызовет die, при условии, что соединение с базой данных не произошло.

Шаг 3: Отправьте команды SQL-серверу

Когда модуль загружен и соединение с сервером баз данных установлено, начинается самое интересное. Пошлем серверу несколько SQL-команд. Мы будем использовать запросы, приведенные в качестве примеров из приложения D. В этих запросах для заключения в кавычки применяется оператор q (т. e. something записывается как q{something}), следовательно, не нужно беспокоиться о кавычках внутри запросов. Вот первый из двух DBI-методов, существующих для отправки команд:

$results=$dbh->do(q{UPDATE hosts

SET bldg = 'Main'

WHERE name = 'bendir'});

die "Невозможно выполнить обновление:

$DBI: :errstr\n" unless (define;; Sresults);

Переменная Sresuits равна либо количеству обновленных записей, либо uricief, если произошла ошибка. И хотя важно знать, сколько записей было обработано, такой метод абсолютно не подходит для операторов, подобных SELECT, где необходимо увидеть сами данные. Следовательно, нужно применить второй метод.




Содержание  Назад  Вперед