English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de PostgreSQL

Tutoriales avanzados de PostgreSQL

Interfaz de PostgreSQL

Interfaz PostgreSQL Perl

Instalación

PostgreSQL puede integrarse con Perl utilizando el módulo perldbi, que es un módulo de acceso a bases de datos para el lenguaje de programación Perl. Definió un conjunto de métodos, variables y convenciones que proporcionan una interfaz estándar para las bases de datos.

A continuación, en su Linux/Pasos sencillos para instalar el módulo DBI en una máquina Unix

$ 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

Si necesita instalar el controlador SQLite para DBI, puede seguir la siguiente instalación

$ 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

Antes de comenzar a usar el interfaz Perl PostgreSQL, encontrar el archivo pg_hba.conf en el directorio de instalación de PostgreSQL y agregar la siguiente línea

# IPv4 Conexiones locales:
host all all         127.0.0.1/32          md5

Si el servidor postgres no está en ejecución, puede usar las siguientes órdenes para iniciarlo/Reiniciar el servidor postgres-

[root@host]# service postgresql restart
Deteniendo el servicio postgresql: [...] [OK]
Iniciando el servicio postgresql: [...] [OK]

APIs del interfaz DBI

A continuación se presentan algunos procedimientos importantes de DBI que pueden satisfacer sus necesidades en programas Perl utilizando bases de datos SQLite. Si está buscando aplicaciones más complejas, puede consultar la documentación oficial de Perl DBI.

N.ºAPI & Descripción
1

DBI→connect($data_source, "userid", "password", \%attr)

Establecer una conexión o sesión a la base de datos solicitada $data_source. Si la conexión es exitosa, devuelve un objeto manejador de base de datos.

El formato de Datasource es: DBI:Pg:dbname=$database;host=127.0.0.1;port=,5432 Pg es el nombre del programa de controlador PostgreSQL, testdb es el nombre de la base de datos.

2

$dbh→do($sql)

Esta rutina prepara y ejecuta una declaración SQL. Al devolver errores, afecta o no define el número de filas. Valor de retorno-1Representa el número de filas desconocido, inaplicable o no disponible. Aquí $dbh es el manejador devuelto por la llamada DBI → connect().

3

$dbh→prepare($sql)

Preparar una declaración para que el motor de base de datos la ejecute más tarde y devolver una referencia al objeto manejador de declaración.
4

$sth→execute()

Ejecutar cualquier procesamiento necesario para ejecutar la declaración preparada. Si ocurre un error, se devuelve undef. Siempre se devuelve true después de una ejecución exitosa, independientemente del número de filas afectadas. Aquí $sth es un manejador de declaración devuelto por la llamada $dbh→prepare($sql).

5

$sth→fetchrow_array()

Obtener la siguiente línea de datos y devolverla como una lista que contiene valores de campos. Los campos vacíos se devuelven como valor undef en la lista.

6

$DBI::err

相当于$h->err,其中$h是任何句柄类型,如$dbh、$sth或$drh。这将从上次调用的驱动程序方法返回本机数据库引擎错误代码。

7

$DBI::errstr

相当于$h->errstr,其中$h是任何句柄类型,如$dbh、$sth或$drh。这将从上次调用的DBI方法返回本机数据库引擎错误消息。

8

$dbh->disconnect();

关闭了之前通过调用DBI→connect()打开的数据库连接。

连接数据库

下面的Perl代码展示了如何连接到现有数据库。如果数据库不存在,那么将创建它,最后将返回一个数据库对象。

#!/usr/bin/perl
usar DBI;
usar estricto;
my $driver = "Pg"; 
mi $database = "testdb";
mi $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;puerto = 5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}} 
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\n";

现在,让我们运行上面给定的程序来打开数据库testdb;如果数据库成功打开,那么它将给出以下消息-

Open database successfully

创建表

下面的Perl程序将用于在先前创建的数据库中创建表

#!/usr/bin/perl
usar DBI;
usar estricto;
mi $driver = "Pg"; 
mi $database = "testdb";
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=,5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}}
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\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););
mi $rv = $dbh->do($stmt);
si ($rv < 0) {
   imprimir $DBI::errstr;
} else {
   print "Table created successfully\n";
}
$dbh->desconectar();

当执行上面给定的程序时,它将在 testdb 中创建 COMPANY 表,并显示以下消息-

Base de datos abierta con éxito
Table created successfully

INSERT 操作

下面的Perl程序显示了如何在上面示例中创建的COMPANY表中创建记录-

#!/usr/bin/perl
usar DBI;
usar estricto;
mi $driver = "Pg"; 
mi $database = "testdb";
mi $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;puerto = 5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}}
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\n";
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY);
   VALORES (1, 'Paul', 32, 'California', 20000.00 ));
mi $rv = $dbh->hacer($stmt) o morir $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
   VALORES (2, 'Allen', 25, 'Texas', 15000.00 ));
$rv = $dbh->hacer($stmt) o morir $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
   VALORES (3, 'Teddy', 23, \'Norway\',}} 20000.00 ));
$rv = $dbh->hacer($stmt) o morir $DBI::errstr;
$stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
   VALORES (4, \'Mark\', 25-Mond ' 65000.00 ));
$rv = $dbh->hacer($stmt) o morir $DBI::errstr;
imprimir "Registros creados con éxito\n";
$dbh->desconectar();

Cuando se ejecuta el programa anterior, se creará el registro dado en la tabla COMPANY y se mostrarán las siguientes dos líneas

Base de datos abierta con éxito
Registros creados con éxito

Operación SELECT

El siguiente programa Perl muestra cómo obtener y mostrar los registros de la tabla COMPANY creada en el ejemplo anterior-

#!/usr/bin/perl
usar DBI;
usar estricto;
mi $driver = "Pg"; 
mi $database = "testdb";
mi $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;puerto = 5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}}
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\n";
mi $stmt = qq(SELECT id, name, address, salary FROM COMPANY;);
mi $sth = $dbh->preparar( $stmt );
mi $rv = $sth->ejecutar() o morir $DBI::errstr;
si ($rv < 0) {
   imprimir $DBI::errstr;
}
mientras (mi @row = $sth->obtener_fila_array()) {
      imprimir "ID = " . $row[0] . "\n";
      imprimir "NAME = " . $row[1]."\n";
      imprimir "ADDRESS = " . $row[2]."\n";
      imprimir "SALARY = " . $row[3]."\n\n";
}
imprimir "Operación realizada con éxito\n";
$dbh->desconectar();

Cuando se ejecuta el programa anterior, se producirá el siguiente resultado

Base de datos abierta con éxito
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
Operación realizada con éxito

Operación UPDATE

El siguiente código Perl muestra cómo usar la sentencia UPDATE para actualizar cualquier registro y luego obtener y mostrar los registros actualizados de nuestra tabla COMPANY:

#!/usr/bin/perl
usar DBI;
usar estricto;
mi $driver = "Pg"; 
mi $database = "testdb";
mi $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;puerto = 5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}}
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\n";
mi $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID =1;);
mi $rv = $dbh->hacer($stmt) o morir $DBI::errstr;
si ($rv < 0) {
   imprimir $DBI::errstr;
} else {
   imprimir "Número total de filas actualizadas: $rv\n";
}
$stmt = qq(SELECT id, name, address, salary FROM COMPANY;);
mi $sth = $dbh->preparar( $stmt );
$rv = $sth->ejecutar() o morir $DBI::errstr;
si ($rv < 0) {
   imprimir $DBI::errstr;
}
mientras (mi @row = $sth->obtener_fila_array()) {
      imprimir "ID = " . $row[0] . "\n";
      imprimir "NAME = " . $row[1]."\n";
      imprimir "ADDRESS = " . $row[2]."\n";
      imprimir "SALARY = " . $row[3]."\n\n";
}
imprimir "Operación realizada con éxito\n";
$dbh->desconectar();

Cuando se ejecuta el programa anterior, se producirá el siguiente resultado

Base de datos abierta con éxito
Número total de filas actualizadas: 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
Operación realizada con éxito

Operación DELETE

El siguiente código Perl muestra cómo usar la sentencia DELETE para eliminar cualquier registro y luego obtener y mostrar los registros de la tabla COMPANY-obtener y mostrar los registros restantes

#!/usr/bin/perl
usar DBI;
usar estricto;
mi $driver = "Pg"; 
mi $database = "testdb";
mi $dsn = "DBI:$driver:dbname = $database;host = 127.0.0.1;puerto = 5432";
mi $userid = "postgres";
mi $password = "pass123";
mi $dbh = DBI->conectar($dsn, $userid, $password, { RaiseError => 1 })}}
   o morir $DBI::errstr;
imprimir "Base de datos abierta con éxito\n";
mi $stmt = qq(DELETE FROM COMPANY WHERE ID=;2;);
mi $rv = $dbh->hacer($stmt) o morir $DBI::errstr;
si ($rv < 0) {
   imprimir $DBI::errstr;
} else {
   imprimir "Número total de filas eliminadas: $rv\n";
}
$stmt = qq(SELECT id, name, address, salary FROM COMPANY;);
mi $sth = $dbh->preparar( $stmt );
$rv = $sth->ejecutar() o morir $DBI::errstr;
si ($rv < 0) {
   imprimir $DBI::errstr;
}
mientras (mi @row = $sth->obtener_fila_array()) {
      imprimir "ID = " . $row[0] . "\n";
      imprimir "NAME = " . $row[1]."\n";
      imprimir "ADDRESS = " . $row[2]."\n";
      imprimir "SALARY = " . $row[3]."\n\n";
}
imprimir "Operación realizada con éxito\n";
$dbh->desconectar();

Cuando se ejecuta el programa anterior, se producirá el siguiente resultado

Base de datos abierta con éxito
Número total de filas eliminadas: 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
Operación realizada con éxito