Выборка данных в MySQL с помощью Perl3 мин для чтения

Все блоги / Нетбуки и Планшеты 5 декабря 2020 131   
Выборка данных в MySQL с помощью Perl3 мин для чтения
Описание: в этой статье мы покажем вам, как запрашивать данные из таблиц базы данных 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.
  • Оцените публикацию
  • 0

Похожие публикации

@
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent

Архив публикаций