Вставка Данных в MySQL с помощью Perl

Мы будем использовать таблицу links, созданную в статье по созданию таблиц в MySQL. Если вы еще не создали таблицу links, мы настоятельно рекомендуем создать ее перед тем, как приступить к изучению этой статьи.
Чтобы вставить новую строку в таблицу с помощью Perl DBI, вам необходимо выполнить следующие шаги:
- Разобрать оператор INSERT, вызвав метод prepare() объекта дескриптора базы данных. Метод prepare() возвращает операторный дескриптор объекта , который представляет заявление в базе данных MySQL. На этом шаге Perl DBI проверяет оператор INSERT, чтобы убедиться, что он действителен. Если в операторе INSERT есть какая-либо ошибка, например, она ссылается на несуществующую таблицу или является недопустимым оператором SQL, оператор prepare() возвращает значение undef. Кроме того, Perl заполняет сообщение об ошибке в переменной $DBI::errstr.
- Выполните оператор INSERT, вызвав метод execute() объекта дескриптора оператора. На этом этапе Perl выполняет инструкцию INSERT в базе данных MySQL. В метод execute() возвращает true на успех и значение undef в случае неудачи. В случае сбоя Perl также вызывает исключение через функцию die(), чтобы немедленно прервать сценарий, если атрибут RaiseError включен.
Обратите внимание, что вы можете выполнить инструкцию UPDATE или DELETE , используя эти шаги.
Пример вставки Perl MySQL
Следующий скрипт позволяет вставлять данные в таблицу ссылок:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # для функции say()
use DBI;
# конфигурации базы данных MySQL
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';
say "Демонстрация вставки в MySQL с помощью Perl";
# получить входные ссылки пользователя
my @links = get_links();
# подключение к базе данных MySQL
my %attr = (PrintError=>0,RaiseError=>1 );
my $dbh = DBI->connect($dsn,$username,$password,\%attr);
# вставка данных в таблицу ссылок
my $sql = "INSERT INTO links(title,url,target)
VALUES(?,?,?)";
my $stmt = $dbh->prepare($sql);
# выполнение запроса
foreach my $link(@links){
if($stmt->execute($link->{title}, $link->{url}, $link->{target})){
say "link $link->{url} вставлено успешно";
}
}
$stmt->finish();
# отключитесь от базы данных MySQL
$dbh->disconnect();
sub get_links{
my $cmd = '';
my @links;
# получение ссылок из командной строки
my($title,$url,$target);
# повторно запрашивать данные ссылки из командной строки
do{
say "title:";
chomp($title = <STDIN>);
say "url:";
chomp($url = <STDIN>);
say "target:";
chomp($target = <STDIN>);
#
my %link = (title=> $title, url=> $url, target=> $target);
push(@links,\%link);
print("\nВы хотите вставить еще одну ссылку? (Y/N)?");
chomp($cmd = <STDIN>);
$cmd = uc($cmd);
}until($cmd eq 'N');
return @links;
}
Как это работает.
- Сначала мы создали новую подпрограмму, которая вызывается get_links() для получения информации о ссылке от ввода пользователя. Подпрограмма get_links() возвращает список ссылок, как массив.
- Далее мы подключились к базе данных perlmysqldb.
- Затем мы подготовили оператор INSERT, который вставляет данные в таблицу links. Знаки вопроса ( ?) — это заполнители, которые будут заменены соответствующими значениями title, url и target. Мы передали заявление INSERT в метод prepare() подготовки исполнения.
- После этого мы повторили массив @links и выполнили оператор INSERT. Мы отобразили сообщение, чтобы указать, были ли данные вставлены в таблицу links успешно.
- Наконец, мы отключились от базы данных MySQL, вызвав метод disconnect() объекта дескриптора базы данных.
Следующее иллюстрирует вывод, когда мы вставили 4 строки в таблицу links.
title: MySQL url: http://andreyex.ru/ target: _self Вы хотите вставить еще одну ссылку? (Y/N)?Y title: Демонстрация вставки в MySQL с помощью Perl url: http://www.andreyex.ru/.../perl-mysql-insert/ target: _blank Вы хотите вставить еще одну ссылку? (Y/N)?Y title: Perl url: http://www.perl.org target: _blank Вы хотите вставить еще одну ссылку? (Y/N)?Y title: MySQL url: http://www.mysql.com target: _self Вы хотите вставить еще одну ссылку? (Y/N)?N link http://andreyex.ru/ вставлено успешно link http://www.andreyex.ru/perl-mysql/perl-mysql-insert/ вставлено успешно link http://www.perl.org вставлено успешно link http://www.mysql.com вставлено успешно
Мы можем проверить таблицу links, чтобы проверить операции вставки:
SELECT * FROM links;
Из этой статьи вы узнали, как использовать Perl DBI для вставки данных в таблицу базы данных MySQL.
Редактор: AndreyEx
