PostgreSQL - Interfejs do komunikacji z bazą perl
Kategoria: Artykuły, etykiety: bazy danych
Dodany: 2010-05-24 19:42
(zmodyfikowany: 2010-05-24 20:14)
Przez: BiExi
Wyświetleń: 25944
- PostgreSQL - instalacja i konfiguracja
- PostgreSQL – operacje na użytkownikach i bazie konsola
- PostgreSQL – Interfejs do komunikacji z bazą perl
Zadaniem naszego programiku będzie:
Utworzenie tabeli o określonej zawartości, przechowującej takie dane jak imię nazwisko wiek,
Uzupełnienie jej informacją o 3 osobach,
Zmiana wieku dla jednej osoby,
Usunięcie ostatniego elementu,
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