Описание: в этой статье мы шаг за шагом покажем вам, как подключаться к базе данных MySQL и отключаться от нее с помощью Perl DBI API.
Давайте начнем с создания простой базы данных в MySQL, названной perlmysqldb для демонстрации.
CREATE DATABASE perlmysqldb;
Подключение к базе данных MySQL
Когда вы подключаетесь к базе данных MySQL, вам необходимо указать следующую информацию:
- Во-первых, вы должны указать DBI, где найти сервер базы данных MySQL. Эта информация называется именем источника данных или DSN. Имя источника данных указывает, какой драйвер использовать, к какой базе данных вы хотите подключиться. Perl требует имя источника данных для начала dbi: и имя драйвера, в данном случае, это mysql, следует за другим двоеточием:например, dbi:mysql:, а затем имя базы данных , например, dbi:mysql:perlmysqldb.
- Во-вторых, вам необходимо указать имя пользователя и пароль учетной записи MySQL, которую вы подключаете к базе данных.
- В-третьих, необязательные атрибуты соединения указывают способ обработки исключениями DBI исключений, которые могут возникнуть при подключении к базе данных MySQL.
Синтаксис для создания соединения с базой данных MySQL следующий:
$dbh = DBI->connect($dsn,$username,$password,\%attr);
Метод connect() возвращает дескриптор базы данных , если подключение к базе данных установлено успешно. Например, чтобы подключиться к perlmysqldb, вы используете следующий скрипт:
#!/usr/bin/perl use strict; use warnings; use v5.10; # for say() function use DBI; say "Демонстрация соединения MySQL с помощью Perl"; # Конфигурация базы данных MySQL my $dsn = "DBI:mysql:perlmysqldb"; my $username = "root"; my $password = ''; # connect to MySQL database my %attr = ( PrintError=>0, # turn off error reporting via warn() RaiseError=>1}; # включение отчетов об ошибках через die() my $dbh = DBI->connect($dsn,$username,$password, \%attr); say "Подключен к базе данных MySQL.";
Как это работает.
- Сначала, чтобы использовать модуль DBI, мы помещаем use DBI;оператор в верхнюю часть скрипта.
- Далее мы определили некоторые переменные, которые содержат имя источника данных, имя пользователя и пароль.
- Затем мы определили хеш, который содержит атрибуты соединения. Эти атрибуты соединения будут обсуждаться в разделе обработки ошибок позже.
- После этого мы передали соответствующие аргументы методу connect() для создания соединения с базой данных perlmysqdb.
- Наконец, мы отобразили сообщение, указывающее, что скрипт успешно подключен к базе данных MySQL.
Ниже приведен вывод сценария:
Демонстрация соединения MySQL с помощью Perl Подключен к базе данных MySQL.
Обработка ошибок
Perl DBI позволяет обрабатывать ошибки вручную и/или автоматически. Perl DBI обнаруживает ошибку, когда она происходит и вызывает warn() или функцию die() с соответствующим сообщением об ошибке.
Атрибут PrintError инструктирует DBI, чтобы вызвать функцию warn(), которая выводит ошибки на экран. RaiseErrorАтрибут указывает DBI для вызова функции die() на ошибки и прерывания сценария немедленно.
Perl DBI включает PrintError по умолчанию. Тем не менее, мы настоятельно рекомендуем отключить атрибут PrintError и включить RaiseError, чтобы DBI автоматически обработал ошибку.
Если вы не включите RaiseError, вы должны обработать ошибку вручную следующим образом:
# без RasieError off: my $dbh = DBI->connect($dsn,$username,$password) or die("Ошибка подключения к базе данных: $DBI::errstr\n");
Когда произошла ошибка, DBI сохранил сообщение об ошибке в переменной $DBI::errstr. По сути, вышеприведенный оператор означает, что если соединение с базой данных не удалось, он отображает сообщение об ошибке и немедленно прерывает сценарий.
Еще одно преимущество включения атрибута RaiseError состоит в том, что код будет выглядеть более читабельным, поскольку вам не нужно включать оператор die() везде, где вы вызываете метод DBI.
Отключение от базы данных MySQL
Если вы больше не взаимодействуете с базой данных, вам следует явно отключиться от нее. Это хорошая практика программирования.
Чтобы отключиться от базы данных, вы используете метод disconect() объекта дескриптора базы данных следующим образом:
# отключитесь от базы данных MySQL
$dbh->disconnect();
Из этой статьи вы узнали, как подключаться к базе данных MySQL и отключаться от нее с помощью API Perl DBI.