Выполнение SQL-запросов в БД PostgreSQL на Perl

Краткая инструкция по выполнению SQL-запросов с использованием языка Perl в базе данных PostgreSQL.

За основу берём скрипт подключения Perl к СУБД PostgreSQL.

Само по себе успешное подключение предполагает дальнейшую работу с базой данных. Поэтому вместо условия успешного подключения к БД начнём писать скрипт.

Запрос может быть любым. В нашем примере запрос будет выбирать все колонки и строки из таблицы shop_goods:

SELECT * FROM shop_goods;

Заворачиваем запрос в переменную $query и выполняем его:

my $query = $dbh->prepare("SELECT * FROM shop_goods");
$query->execute();

Далее циклом while обходим строки таблицы:

while ($ref = $query->fetchrow_arrayref){
        print "<p>$$ref[0]. $$ref[2] - $$ref[3] - $$ref[4] рублей - $$ref[5] штук </p> \n";
}

После этого завершаем работу с запросом и отключаемся от БД:

$rc = $query->finish;
$rc = $dbh->disconnect;

Полностью рабочий скрипт будет выглядеть примерно так:

#!/usr/bin/perl

use DBI;

my $hostname = "localhost";
my $port = "5432";
my $user = "db_user";
my $password = "yourPassword";
my $dbname = "test_db";

print "Content-Type: text/html;charset=utf-8 \n\n";
print "<h1>PostgreSQL query example</h1> \n";

my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$hostname;port=$port",$user,$password);

if (!$dbh) {
        print "<h2>Ошибка подключения к базе данных.</h2> \n $DBI::errstr \n";
}

my $query = $dbh->prepare("SELECT * FROM shop_goods");
$query->execute();

while ($ref = $query->fetchrow_arrayref){
        print "<p>$$ref[0]. $$ref[2] - $$ref[3] - $$ref[4] рублей - $$ref[5] штук </p> \n";
}

$rc = $query->finish;
$rc = $dbh->disconnect;

Результат выполнения данного скрипта будет выглядеть так:

PostgreSQL query example

1. Ноутбук ASUS VivoBook A540L - Ноутбуки - 15000.00 рублей - 10 штук

2. МФУ Kyocera Ecosys M2535fdn - МФУ - 22000.00 рублей - 5 штук

3. Сумка для ноутбука 15-дюймов, серая - Сумки и чехлы - 3500.00 рублей - 6 штук

4. Картридж Cactus CS-CE285A - Картриджи - 950.00 рублей - 15 штук

5. SSD диск GIGABYTE 2.5" 256 Гб SATA III NAND TLC (GP-GSTFS31256GTND) - SSD-диски - 3000.00 рублей - 18 штук

6. USB флешка 64Gb Kingston DTX/64Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 750.00 рублей - 35 штук

7. USB флешка 128Gb Kingston DTX/128Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 1300.00 рублей - 25 штук

8. Телевизор Samsung UE50TU8000UX, 4K Ultra HD, черный - Телевизоры - 46800.00 рублей - 3 штук

9. Кронштейн ONKRON M15, для LCD телевизора 32"-75", черный - Кронштейны - 4100.00 рублей - 8 штук

10. Телевизор LG 43LM5700PLA, черный - Телевизоры - 32000.00 рублей - 7 штук

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *