1. PostgreSQL - instalacja i konfiguracja  [1]
  2. PostgreSQL – operacje na użytkownikach i bazie konsola [2]
  3. PostgreSQL – Interfejs do komunikacji z bazą perl

Zadaniem naszego programiku będzie:

Przygotowanie środowiska

Instalujemy potrzebną bibliotekę libdbd-pg-perl dzięki której uzyskamy możliwość komunikacji z bazą z poziomu perl'a

aptitude install libdbd-pg-perl 

Kolejnym krokiem jest dodanie użytkownika oraz bazy postgres

createuser -A -D -P -e -W perl
createdb -e -E UTF-8 -O perl perldb

A więc dla naszego przykładu mamy:

użytkownik: perl

baza danych: perldb

hasło: dugportal

Poniżej przedstawię kod wraz z wyjaśnieniem

#!/usr/bin/perl

#dolaczamy sterownik do obslugi baz danych
use DBI;

# nawiazanie polaczenia z baza jesli nie bedzie udane to
# zostanie wyswitlony komunikat i zakonczenie dzialania programu
$db = DBI->connect('DBI:Pg:dbname=perldb','perl','dugportal') or 

# przygotowuje zaputanie do wykonania w tym przypadku tworzy
# tabele adresy
$res = $db->prepare("CREATE TABLE adresy
                    (
                      id_adresy SERIAL NOT NULL,
                      imie varchar(20) NOT NULL,
                             nazwisko varchar(20) NOT NULL,
                      wiek integer NOT NULL CHECK (wiek > 0),
                      PRIMARY KEY (id_adresy) 
                    )");
$res->execute;
print "\nTworze tabele adresy\n";

# uzupełniamy bazę danymi 
$res = $db->prepare("INSERT INTO adresy (imie, nazwisko, wiek)
                      VALUES ('Jan', 'Kowalski', '17')");
$res->execute;
print "\nDodaje pierwszy element\n";

$res = $db->prepare("INSERT INTO adresy (imie, nazwisko, wiek)
                      VALUES ('Adam', 'Nowak', '19')");
$res->execute;
print "Dodaje drugi element\n";

$res = $db->prepare("INSERT INTO adresy (imie, nazwisko, wiek)
                      VALUES ('Anna', 'Zielona', '22')");
$res->execute;
print "Dodaje trzeci element\n";

# wywolanie funkcji wyswietlajacej zawartosc bazy
&wyswietl;

# zmieniamy wiek Jana Kowalskiego
$res = $db->prepare("UPDATE adresy SET wiek='21' WHERE id_adresy = '1'");
$res->execute;
print "\nZmieniam wiek dla id = 1\n";

&wyswietl;

#usuwamy ostatnia pozycje
$res = $db->prepare("DELETE FROM adresy WHERE id_adresy = 3");
$res->execute;
$res->finish; 

print "\nUsuwam wiersz o id 3\n";

&wyswietl;

sub wyswietl
{
  $res = $db->prepare("SELECT * FROM adresy");
  $res->execute;
  print "\n| ID\t | imie\t | nazwisko\t | wiek\t |\n";

  # fetchrow() funkcja pobiera  wiersz tablicy bedacej wynikiem zapytania
  # tutaj w petli whule aby wyswietlic cala tablice
  while(($id_adresy, $imie, $nazw, $wiek) =$res->fetchrow())
  {
     print "| $id_adresy\t | $imie\t | $nazw\t | $wiek\t |\n";
  }
}

Wynik działania programu

Tworze tabele adresy

Dodaje pierwszy element
Dodaje drugi element
Dodaje trzeci element

| ID     | imie  | nazwisko  | wiek  |
| 1  | Jan   | Kowalski  | 17    |
| 2  | Adam  | Nowak     | 19    |
| 3  | Anna  | Zielona   | 22    |

Zmieniam wiek dla id = 1

| ID     | imie  | nazwisko  | wiek  |
| 2  | Adam  | Nowak     | 19    |
| 3  | Anna  | Zielona   | 22    |
| 1  | Jan   | Kowalski  | 21    |

Usuwam wiersz o id 3

| ID     | imie  | nazwisko  | wiek  |
| 2  | Adam  | Nowak     | 19    |
| 1  | Jan   | Kowalski  | 21    |

:] i nie było chyba aż tak źle :P


Przypisy:

  1. http://dug.net.pl/tekst/78/postgresql___instalacja_i_konfiguracja/
  2. http://dug.net.pl/tekst/80/postgresql___operacje_na_uzytkownikach_i_bazie_konsola/