Интерфейс MySQL с perl (MySQL perl API) - Драйвер MySQL DBD Perl

ОГЛАВЛЕНИЕ

Драйвер MySQL DBD Perl

Этот драйвер представляет собой второй способ обратиться к базе данных MySQL из программы на perl.

В настоящее время эта часть описания интерфейса с perl только немного переработана, относительно версии стандартной pod-документации. Данная часть описания изготовлена с помощью команды pod2html -mke.

Обзор:

  use DBI;

  $dbh = DBI->connect( $host, $database, $user, 'mysql' [, $password] );
  # or
  $dbh = DBI->connect('', '', '', 'mysql', {hostname => "localhost",
                      port => 3333, database => "test",
                      username => "myname", password => "mypassword",});

ПРИМЕР:

#!/usr/bin/perl

use DBI;

$drh = DBI->install_driver('mysql');
$dbh = $drh->connect('','test','','') or die "Error connecting to database";
$dbh->do("DROP TABLE foo");
$dbh->do("CREATE TABLE foo ( Field_1 VARCHAR(60) )");
$count = 1;

while ($count < 500) {
  $sth = $dbh->prepare("INSERT INTO foo VALUES('XXXYYYZZZ')");
  $sth->execute;
  $sth->finish; # Очень важно вызвать finish, иначе не освободится память.
  print "$count\n" unless $count % 10;
  $count = $count + 1;
}

Коротко о главном

DBD::mysql является драйвером для работы с базой данных, управляемой СУБД MySQL. Он портирован Michael 'Monty' Widenius of Alligator Descartes' DBD::msql. Вы должны установить DBI-модуль перед использованием DBD::mysql.

$host может быть просто именем сервера (``up.botik.ru'') или именем сервера с указанием порта (``up.botik.ru:3333'').

$database задает имя базы данных с которой надо связаться.

$user задает имя пользователя для доступа к базе данных. (если не указано, используется идентификатор пользователя текущего процесса).

$password является опциональным и нужно только для аккаунтов, которые имеют не пустые пароли.

Системные переменные, которые использует DBD::mysql:

  • hostname
  • database
  • username
  • password
  • port

Значения в системных переменных отменяют значения, переданные раньше. TCP номер порта, отменяет TCP номер порта, переданный в hostname.

Можно разрешить отладку, установив переменную MYSQL_DEBUG 'd:t:O,filename' (где filename является именем файла для записи протокола). Протокол будет записан в файл только если libmysql откомпилирована с поддержкой отладки (опция DBUG).

Поддерживаются следующие тэги:

  • TABLE
  • TYPE
  • IS_PRI_KEY
  • IS_NOT_NULL
  • LENGTH
  • MAXLENGTH
  • IS_KEY
  • IS_BLOB
  • IS_NUM

Для получения значения поля AUTO_INCREMENT INSERT, надо:

  $id = $dbh->func("_InsertID");