Q: Как я могу подключиться к базе данных MySQL из программы на Perl? Я хотел подключиться к существующей базе данных MySQL и сделать выбора записей из определенной таблицы. Можете ли вы объяснить с помощью простого рабочего примера?
A: Вы должны использовать модуль Perl DBI для подключения к базе данных MySQL, как описано ниже.
Если у вас не установлен модуль Perl DBI и DBD::mysql, установите Perl модуль с помощью CPAN.
# perl -MCPAN -e shell cpan> install DBI cpan> install DBD::mysql
На высоком уровне, вы должны сделать следующие три шага для подключения к базе данных MySQL и получить данные.
1. Подключение к базе данных MySQL
В модуле DBI, вы будете использовать функцию connect как показано ниже.
$dbc = DBI->connect($source, $username, $password)
Функция DBI->connect принимает следующие три аргумента:
- $source – Это в формате “DBI: MySQL: [База данных]: [имя хоста]”. Замените [базу данных] и [имя хоста] на значения из вашей системы. В примере, приведенном ниже, подключается к базе данных под названием “AndreyEx”, запущенной на локальном хосте.
- $username – имя пользователя, которое используется для подключения к базе данных MySQL.
- $password – пароль для указанного выше имени пользователя.
Вы должны сохранить возвращаемое значение DBI->connect в переменной, которую вы будете использовать для подготовки отчета в SQL.
2. Подготовить заявление SQL
После того, как вы подключились, вы будете использовать подготовить заявление SQL с помощью команды prepare. Вы будете вызывать команду prepare с помощью переменной, которую была возвращена функция DBI-> connect.
Следующая команда подготовит команду SQL.
$sql = $dbc->prepare("select id, name from employee");
Вы должны хранить возвращаемое значение команды подготовки в переменной, которую вы будете использовать для выполнения команды SQL.
3. Выполнить инструкции SQL
После того, как вы подготовили заявление SQL, выполните оператор, используя команду execute. Вы вызовите команду execute с помощью переменной, который был возвращен функцией prepare.
$out = $sql->execute()
4. Цикл по записям
После того как вы выполнили оператор, вы переберите записи с помощью функции fetchrow_array. Вы будете вызывать функцию fetchrow_array, используя переменную, которой была возвращена функцией prepare.
while (($id, $name) = $sql->fetchrow_array()) { print "Id: $id Name: $name\n"; }
5. Рабочий пример MySQL на Perl
В следующем примере кода Perl соединит базу данных MySQL и выберет записи из таблицы сотрудников и распечатает его.
$ vi connect.pl #!/usr/bin/perl use DBI; $source = "DBI:mysql:mycompany:localhost"; $username = "root"; $password = "мой_пароль"; $dbc = DBI->connect($source, $username, $password) or die "Не могу подключиться к mysql: $DBI::errstr\n"; $sql = $dbc->prepare("select id, name from employee"); $out = $sql->execute() or die "Невозможно выполнить sql: $sql->errstr"; while (($id, $name) = $sql->fetchrow_array()) { print "Id: $id Имя: $name\n"; }
При выполнении приведенного выше кода connect.pl Perl, он будет отображать записи из таблицы сотрудников, как показано ниже.
$ ./connect.pl Id: 100 Имя: AndreyEx Id: 200 Имя: Inna Id: 300 Имя: Alex Id: 400 Имя: Anna Id: 500 Имя: Roman Id: 501 Имя: Leonid