
Описание: в этой статье мы покажем вам, как запрашивать данные из таблиц базы данных MySQL с использованием Perl DBI.
Чтобы запросить данные из таблиц базы данных MySQL из программы Perl, используйте следующие шаги:
Подключитесь к базе данных MySQL, вызвав метод connect().
Подготовьте оператор SELECT для выполнения, используя метод prepare() объекта-дескриптора базы данных. Метод prepare() возвращает объект дескриптора , который представляет заявление в базе данных MySQL.
Выполните оператор SELECT, вызвав метод execute() объекта дескриптора оператора.
Вызов fetchrow_array(), fetchrow_arrayref() или метод fetchrow_hashref() для извлечения данных из результирующего набора до тех пор, пока не остались строк. Вы можете использовать оператор while для итерации набора результатов.
Отключиться от базы данных MySQL.
Примеры Select в MySQL с помощью Perl
Мы будем использовать следующие таблицы для примеров:
Если вы еще не создали таблицы, мы настоятельно рекомендуем создать их, следуя инструкциям по созданию таблиц.
Пример запроса данных из одной таблицы
В следующем примере выбираются данные из таблицы links:
#!/usr/bin/perluse strict;use warnings;use v5.10; # для функции say()use DBI;# Конфигурации баз данных MySQLmy $dsn = "DBI:mysql:perlmysqldb";my $username = "root";my $password = '';# подключение к базе данных MySQLmy %attr = ( PrintError=>0, # отключение отчетов об ошибках с помощью warn()RaiseError=>1 # report error via die());my $dbh = DBI->connect($dsn,$username,$password,%attr);# запрос данных из таблицы ссылокquery_links($dbh);# отключитесь от базы данных MySQL$dbh->disconnect();
Основная логика реализована в подпрограмме query_links:
sub query_links{# запрос из одной таблицыmy ($dbh) = @_;my $sql = "SELECT title,urlFROM links";my $sth = $dbh->prepare($sql);# выполнение запроса$sth->execute();while(my @row = $sth->fetchrow_array()){printf("%st%sn",$row[0],$row[1]);}$sth->finish();}
Вывод сценария выглядит следующим образом:
MySQL Tutorial http://mysqltutorial.org/Транзакции в MySQL с помощью Perl https://andreyex.ru/mysql/tranzaktsii-v-mysql-s-pomoshhyu-perlPerl http://www.perl.orgMySQL http://www.mysql.com
Запрос данных из одной таблицы с примером параметра
Мы часто передаем значения в запрос, чтобы выбрать данные на основе условия. В следующем примере запрашиваются данные из links указанной цели из таблицы links:
sub query_links_by_target{# запрос из таблицы ссылок по целевому объектуmy ($dbh,$target) = @_;my $sql = "SELECT title,url,targetFROM linksWHERE target = ?";my $sth = $dbh->prepare($sql);# выполнение запроса$sth->execute($target);while(my @row = $sth->fetchrow_array()){printf("%st%sn",$row[0],$row[1],$row[3]);}$sth->finish();}
Читать Создание таблиц в MySQL с помощью Perl
Мы ставим знак вопроса в качестве заполнителя в предложении WHERE в заявлении SELECT. Заполнитель будет заменен значением, которое мы передали методу execute().
Например, чтобы выбрать ссылки, целью которых является _self, вы вызываете подпрограмму следующим образом:
query_links_by_target($dbh,'_self');
Вывод:
IT Блог. Администрирование серверов на основе Linux https://andreyex.ru _selfMySQL http://www.mysql.com _self
Или для выбора ссылок, целью которых является _blank, вы передаете значение подпрограмме query_links_by_target() следующим образом:
query_links_by_target($dbh,'_blank');
Вывод:
Транзакции в MySQL с помощью Perl https://andreyex.ru/mysql/tranzaktsii-v-mysql-s-pomoshhyu-perl _blankPerl http://www.perl.org _blankComprehensive Perl Archive Network http://www.cpan.org/ _blank
Запрос данных и вывод результирующего набора
Объект дескриптора оператора предоставляет удобный метод с именем dump_results() для быстрого отображения набора результатов без вызова метода fetchrow_*.
В следующем примере выбираются данные из таблицы tags и выводится набор результатов с помощью метода dump_results():
sub query_tags{# запрос данных из таблицы теговmy ($dbh) = @_;my $sql = "SELECT * FROM tags";my $sth = $dbh->prepare($sql);$sth->execute();$sth->dump_results( );$sth->finish();} Вывод:
'1', 'Perl'1 rows
Запрос данных из нескольких таблиц
Следующий скрипт выбирает данные из трех таблиц: links, tags и link_tags, используя заявление SELECT с заявлением INNER JOIN.
sub query_all{# запрос данных из таблиц links, tags, link_tagsmy ($dbh) = @_;my $sql = "SELECT title, url, target,tagFROM link_tagsINNER JOIN links ON links.link_id = link_tags.link_idINNER JOIN tags ON tags.tag_id = link_tags.tag_id";my $sth = $dbh->prepare($sql);$sth->execute();while(my $array_ref = $sth->fetchrow_arrayref()){printf("%st%st%st%sn", $array_ref->[0],$array_ref->[1],$array_ref->[2],$array_ref->[3]);}$sth->finish();}
В этом примере мы использовали метод fetchrow_arrayref() для извлечения данных из набора результатов. Метод fetchrow_arrayref() возвращает ссылку на массив , а не как сам массив. Метод fetchrow_arrayref() не копирует данные в новый массив для каждой строки в наборе результатов, как в fetchrow_array(), следовательно, быстрее, чем метод fetchrow_array().
Ниже приведен вывод сценария:
Comprehensive Perl Archive Network http://www.cpan.org/ _blank Perl
Мы получили 1 строку, потому что в таблице link_tags только одна строка.
В этой статьи вы узнали о различных способах запроса данных из таблиц базы данных MySQL с использованием API Perl DBI.
Источник: AndreyEx.ru
The post Выборка данных в MySQL с помощью Perl3 мин для чтения appeared first on SEO & SMO.
Источник: bestwebber.ru
Источник: gidsoft
Другие материалы на сайте b.Z - Записки о гаджетах, людях и музыке