• Publicidad

Conexión a PostgreSQL

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Conexión a PostgreSQL

Notapor fmestre » 2010-12-17 18:59 @833

Hola, requiero conectar Perl a PostgreSQL pero no me funciona. El error que me saca es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't locate DBI/Pg.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl5 /usr/share/perl5 /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl .) at ./consulta.pl line 4.
BEGIN failed--compilation aborted at ./consulta.pl line 4.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pero supuestamente yo tengo este módulo Pg instalado pues consulto los módulos y me sale esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
.cpan/build/pgsql_perl5-1.9.0-8YmOc9::Pg
./.cpan/build/DBD-Pg-2.17.2-QawztG::Pg
./.cpan/build/DBD-Pg-2.17.2-QawztG/lib/Bundle/DBD::Pg
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App::Info
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info::Request
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info::Handler
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info::RDBMS
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info::Util
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info/RDBMS::PostgreSQL
./.cpan/build/DBD-Pg-2.17.2-QawztG/t/lib/App/Info/Handler::Prompt
./.cpan/build/DBD-Pg-2.17.2-QawztG/blib/lib/DBD::Pg
./.cpan/build/DBD-Pg-2.17.2-QawztG/blib/lib/Bundle/DBD::Pg
./.cpan/build/DBD-Pg-2.17.2-wHCWk8::Pg
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/lib/Bundle/DBD::Pg
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App::Info
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info::Request
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info::Handler
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info::RDBMS
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info::Util
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info/RDBMS::PostgreSQL
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/t/lib/App/Info/Handler::Prompt
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/blib/lib/DBD::Pg
./.cpan/build/DBD-Pg-2.17.2-wHCWk8/blib/lib/Bundle/DBD::Pg
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



El código que llama la conexión es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $dbh = DBI->connect("DBI:Pg:dbname=prueba;host=localhost", "fabian", "123456",  {'RaiseError'$.
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


coloco mas información, trato de instalarlo y me sale esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
cpan[1]> install DBI::Pg
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/Metadata'
  Database was generated on Fri, 17 Dec 2010 21:58:01 GMT
Warning: Cannot install DBI::Pg, don't know what it is.
Try the command

    i /DBI::Pg/

to find objects with matching identifiers.
CPAN: Time::HiRes loaded ok (v1.9719)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


De antemano gracias por la ayuda.
fmestre
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-12-17 18:42 @821

Publicidad

Re: Conexión a PostgreSQL

Notapor explorer » 2010-12-17 19:19 @846

Bienvenido a los foros de Perl en Español, fmestre.

El módulo DBI::Pg no existe. Es DBD::Pg, que es el que ya tienes instalado.

Al principio del programa solo es necesario poner

use DBI;

En el caso de DBD::Pg, es siempre mejor confiar en el sistema de paquetes de software de tu sistema operativo, en lugar de intentar bajarlo e instalarlo a partir de CPAN, ya que necesitarás compilarlo e incluir las librerías de desarrollo de PostgreSQL, algo que puede llegar a ser muy largo y complicado. Lo más cómodo es que alguien ya haya hecho eso por nosotros.

Por ejemplo, en mi Linux Debian, el paquete se llama libdbd-pg-perl. Y en el Linux OpenSuse de casa se llama perl-DBD-pg.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Conexión a PostgreSQL

Notapor fmestre » 2010-12-17 19:36 @858

Hermano, no sabía que eras tan rápido en responder, pues el código que conseguí es este:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. # load module
  4. use DBI::Pg;
  5.  
  6. # connect
  7. my $dbh = DBI->connect("DBI:Pg:dbname=prueba;host=localhost", "postgres", "123456",  {'RaiseErro$
  8.  
  9. # execute INSERT query
  10. my $rows = $dbh->do("INSERT INTO mascostas (species, name) VALUES ('parrot', 'Polly')");
  11. print "$rows row(s) affected\n";
  12.  
  13. # execute SELECT query
  14. my $sth = $dbh->prepare("SELECT species, name FROM mascostas");
  15. $sth->execute();
  16.  
  17. # iterate through resultset
  18. # print values
  19. while(my $ref = $sth->fetchrow_hashref()) {
  20.    print "$ref->{'name'} is a $ref->{'species'}\n";
  21. }
  22.  
  23. # clean up
  24. $dbh->disconnect();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


entonces imagino que existe ese módulo Pg. Saludos.
fmestre
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-12-17 18:42 @821

Re: Conexión a PostgreSQL

Notapor explorer » 2010-12-17 19:41 @862

No, no existe ese módulo, al menos en CPAN.

El código, entonces, está mal. Cambia DBI::Pg por DBI.

Y veo que la línea 7 no está completa. Lo has copiado mal. Fíjate en los colores que el código tiene: la línea 7 no está bien terminada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Conexión a PostgreSQL

Notapor fmestre » 2010-12-17 20:04 @878

Hola, la cosa es que si le quito eso me saca un error diciéndome que me falta un driver, así queda el código:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. # load module
  4. use DBI;
  5.  
  6. # connect
  7. my $dbh = DBI->connect("DBI::dbname=prueba;host=localhost", "postgres", "123456",  {'RaiseError' => 1});
  8.  
  9. # execute INSERT query
  10. my $rows = $dbh->do("INSERT INTO mascostas (species, name) VALUES ('parrot', 'Polly')");
  11. print "$rows row(s) affected\n";
  12.  
  13. # execute SELECT query
  14. my $sth = $dbh->prepare("SELECT species, name FROM mascostas");
  15. $sth->execute();
  16.  
  17. # iterate through resultset
  18. # print values
  19. while(my $ref = $sth->fetchrow_hashref()) {
  20.     print "$ref->{'name'} is a $ref->{'species'}\n";
  21. }
  22.  
  23. # clean up
  24. $dbh->disconnect();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y este es el error:


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[root@localhost ~]# ./consulta.pl
Can't connect to data source 'dbname=prueba;host=localhost' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at ./consulta.pl line 7
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
fmestre
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-12-17 18:42 @821

Re: Conexión a PostgreSQL

Notapor explorer » 2010-12-18 06:00 @292

Has quitado el 'Pg' de la línea del método connect(). Te dije que solo cambiaras la línea del 'use'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 38 invitados

cron