English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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]
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
下面的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
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
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
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