PostgreSQL - Antarmuka Perl
Instalasi
PostgreSQL dapat diintegrasikan dengan Perl menggunakan modul Perl DBI, yang merupakan modul akses database untuk bahasa pemrograman Perl. Ini mendefinisikan satu set metode, variabel dan konvensi yang menyediakan antarmuka database standar.
Berikut adalah langkah-langkah sederhana untuk menginstal modul DBI di mesin Linux / Unix Anda -
$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz
$ tar xvfz DBI-1.625.tar.gz
$ cd DBI-1.625
$ perl Makefile.PL
$ make
$ make install
Jika Anda perlu menginstal driver SQLite untuk DBI, maka dapat diinstal sebagai berikut -
$ wget http://search.cpan.org/CPAN/authors/id/T/TU/TURNSTEP/DBD-Pg-2.19.3.tar.gz
$ tar xvfz DBD-Pg-2.19.3.tar.gz
$ cd DBD-Pg-2.19.3
$ perl Makefile.PL
$ make
$ make install
Sebelum Anda mulai menggunakan antarmuka Perl PostgreSQL, temukan file pg_hba.conf file di direktori instalasi PostgreSQL Anda dan tambahkan baris berikut -
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Anda dapat memulai / memulai ulang server postgres, jika tidak berjalan, gunakan perintah berikut -
[root@host]# service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
API Antarmuka DBI
Berikut ini adalah rutinitas DBI yang penting, yang dapat memenuhi kebutuhan Anda untuk bekerja dengan database SQLite dari program Perl Anda. Jika Anda mencari aplikasi yang lebih canggih, Anda dapat melihat dokumentasi resmi Perl DBI.
No. S. | API & Deskripsi |
---|---|
1 | DBI→connect($data_source, "userid", "password", \%attr) Membuat koneksi database, atau sesi, ke $ data_source yang diminta. Mengembalikan objek pegangan database jika koneksi berhasil. Sumber data memiliki bentuk seperti: DBI:Pg:dbname=$database;host=127.0.0.1;port=5432 Pg adalah nama driver PostgreSQL dan testdb adalah nama database. |
2 | $dbh→do($sql) Rutinitas ini menyiapkan dan menjalankan satu pernyataan SQL. Mengembalikan jumlah baris yang terpengaruh atau undef pada kesalahan. Nilai kembali -1 berarti jumlah baris tidak diketahui, tidak berlaku, atau tidak tersedia. Di sini $ dbh adalah sebuah handle yang dikembalikan oleh panggilan DBI → connect (). |
3 | $dbh→prepare($sql) Rutin ini menyiapkan pernyataan untuk dieksekusi nanti oleh mesin database dan mengembalikan referensi ke objek pegangan pernyataan. |
4 | $sth→execute() Rutin ini melakukan pemrosesan apa pun yang diperlukan untuk menjalankan pernyataan yang disiapkan. Undef dikembalikan jika terjadi kesalahan. Eksekusi yang berhasil selalu mengembalikan nilai true terlepas dari jumlah baris yang terpengaruh. Di sini $ sth adalah handle pernyataan yang dikembalikan oleh $ dbh → prepared ($ sql) call. |
5 | $sth→fetchrow_array() Rutinitas ini mengambil baris data berikutnya dan mengembalikannya sebagai daftar yang berisi nilai bidang. Bidang kosong dikembalikan sebagai nilai undef dalam daftar. |
6 | $DBI::err Ini sama dengan $ h → err, di mana $ h adalah salah satu tipe pegangan seperti $ dbh, $ sth, atau $ drh. Ini mengembalikan kode kesalahan mesin database asli dari metode driver terakhir yang dipanggil. |
7 | $DBI::errstr Ini sama dengan $ h → errstr, di mana $ h adalah salah satu tipe pegangan seperti $ dbh, $ sth, atau $ drh. Ini mengembalikan pesan kesalahan mesin database asli dari metode DBI terakhir yang dipanggil. |
8 | $dbh->disconnect() Rutin ini menutup koneksi database yang sebelumnya dibuka oleh panggilan ke DBI → connect (). |
Menghubungkan ke Database
Kode Perl berikut menunjukkan cara menyambung ke database yang sudah ada. Jika database tidak ada, maka akan dibuat dan akhirnya objek database akan dikembalikan.
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
Sekarang, mari kita jalankan program yang diberikan di atas untuk membuka database kita testdb; Jika database berhasil dibuka maka akan muncul pesan berikut -
Open database successfully
Buat Tabel
Program Perl berikut akan digunakan untuk membuat tabel di database yang dibuat sebelumnya -
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL););
my $rv = $dbh->do($stmt);
if($rv < 0) {
print $DBI::errstr;
} else {
print "Table created successfully\n";
}
$dbh->disconnect();
Ketika program yang diberikan di atas dijalankan, itu akan membuat tabel PERUSAHAAN di Anda testdb dan itu akan menampilkan pesan berikut -
Opened database successfully
Table created successfully
Operasi INSERT
Program Perl berikut menunjukkan bagaimana kita dapat membuat catatan dalam tabel PERUSAHAAN kita yang dibuat pada contoh di atas -
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 ));
my $rv = $dbh->do($stmt) or die $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ););
$rv = $dbh->do($stmt) or die $DBI::errstr;
print "Records created successfully\n";
$dbh->disconnect();
Ketika program yang diberikan di atas dijalankan, itu akan membuat catatan yang diberikan dalam tabel PERUSAHAAN dan akan menampilkan dua baris berikut -
Opened database successfully
Records created successfully
PILIH Operasi
Program Perl berikut menunjukkan bagaimana kita dapat mengambil dan menampilkan catatan dari tabel PERUSAHAAN kita yang dibuat pada contoh di atas -
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(SELECT id, name, address, salary from COMPANY;);
my $sth = $dbh->prepare( $stmt );
my $rv = $sth->execute() or die $DBI::errstr;
if($rv < 0) {
print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
print "ID = ". $row[0] . "\n";
print "NAME = ". $row[1] ."\n";
print "ADDRESS = ". $row[2] ."\n";
print "SALARY = ". $row[3] ."\n\n";
}
print "Operation done successfully\n";
$dbh->disconnect();
Ketika program yang diberikan di atas dijalankan, itu akan menghasilkan hasil sebagai berikut -
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully
UPDATE Operasi
Kode Perl berikut menunjukkan bagaimana kita dapat menggunakan pernyataan UPDATE untuk memperbarui catatan apa pun dan kemudian mengambil dan menampilkan catatan yang diperbarui dari tabel PERUSAHAAN kita -
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ) {
print $DBI::errstr;
}else{
print "Total number of rows updated : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0) {
print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
print "ID = ". $row[0] . "\n";
print "NAME = ". $row[1] ."\n";
print "ADDRESS = ". $row[2] ."\n";
print "SALARY = ". $row[3] ."\n\n";
}
print "Operation done successfully\n";
$dbh->disconnect();
Ketika program yang diberikan di atas dijalankan, itu akan menghasilkan hasil sebagai berikut -
Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully
HAPUS Operasi
Kode Perl berikut menunjukkan bagaimana kita dapat menggunakan pernyataan DELETE untuk menghapus catatan apapun dan kemudian mengambil dan menampilkan catatan yang tersisa dari tabel PERUSAHAAN kita -
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;port = 5432";
my $userid = "postgres";
my $password = "pass123";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;
print "Opened database successfully\n";
my $stmt = qq(DELETE from COMPANY where ID=2;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ) {
print $DBI::errstr;
} else{
print "Total number of rows deleted : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0) {
print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
print "ID = ". $row[0] . "\n";
print "NAME = ". $row[1] ."\n";
print "ADDRESS = ". $row[2] ."\n";
print "SALARY = ". $row[3] ."\n\n";
}
print "Operation done successfully\n";
$dbh->disconnect();
Ketika program yang diberikan di atas dijalankan, itu akan menghasilkan hasil sebagai berikut -
Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully