[Cascavel-pm] Perl + Postgres

Fabio G. Martins fabio.martins em apenas.com
Terça Agosto 19 07:14:49 CDT 2003


Bom dia Hélcio
Para que a conexão com o Postgres funcione vc precisa de alguns itens
básicos, vou deixar bem claro p/ que funcione o seu sistema

1º Passo - Independente do sistema operacional, vc deve ter permissão de
acesso com ou sem senha dentro do "pg_hba.conf" (Configurção do Postgres)

ex:
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD

local   all         all                                             ident
sameuser
host    all         all         127.0.0.1         255.255.255.255   ident
sameuser
host    senhas         snow         192.168.0.0       255.255.255.0
password

Neste exemplo está configurado p/ toda a minha rede acessar o banco "senhas"
apenas com o usuario "snow", acesso único e exclusivamente para este usuário

para garantir o funcionamento, tente acessar a base de dados de uma máquina
remota com o comando programa psql:
ex:
psql senhas -U snow
password: *****

senhas=> selec * from tab_usuarios;

Certo isto estando funcionando vc precisa ter algumas bibliotecas instaladas
para conexão do Perl com o Banco PostgreSQL, segue abaixo a lista das
mesmas:

libdbd-pg-perl - PostgreSQL interface for Perl 5 using DBI
libpgperl - Perl modules for PostgreSQL


certo estando as devidas bibliotecas instaladas, vc já pode escrever o seu
código p/ conexão vou te mandar um exemplo também:

ex:
#!/usr/bin/perl -w

$| = 1;

use CGI; use DBI;
$page = new CGI;

print $page->header();
open CONF, "config.conf";
@confs = ;
print $confs[0];
print $confs[1];
print $confs[2];
my $host = $confs[3];
my $db = $confs[4];
my $usuario = lc($page->param('usuario'));
my $senha = lc($page->param('senha'));
my $banco = DBI->connect("DBI:Pg:dbname=$db; host=$host", "snow", "sua
senha") or print $DBI::errstr;
my $sql = "select nome, senha, tipo from tab_usuarios where nome like '" .
$usuario . "' and senha like '" . $senha . "'";
my $query = $banco->prepare($sql) or print $DBI::errstr;
$query->execute or print $DBI::errstr;

Bem acredito que o Script tenha ficado claro, porém caso vc não entenda eu
estou fazendo o seguinte, eu abro um arquivo onde eu armazeno diversas
configurações entre elas os dados do acesso ao meu banco, dai em cada script
CGI que eu crio eu coloco estas linhas padrões que vão printar em HTML
cabeçalho da página, uso também no inicio do script o módulo DBI que será
indispensável pára conexão com o banco em seguida estão as strings de
conexão com o banco, exatament o seguinte comando
"DBI->connect("DBI:Pg:dbname=$db; host=$host", "snow", "sua senha")" irá se
encarregar da sua conexão com o banco, o resto é dedutivo espero que vc
entenda, caso não pode continuar a perguntar que ficaremos felizes em
ajudar.

Só mais uma coisinha, caso não funcione ainda assim seria bom vc debugar,
mandando o DBI imprimir as mensagens de erro caso, ainda sim não fique claro
tente dar uma olhada no log de erros do apache, caso vc não consiga
solucionar sozinho, coloque as mensagens de erro aqui na lista que
tentaremos ajudá-lo.

ex: cat /var/log/apache/error.log

Espero ter ajudado, qualquer coisa pergunte denovo

----- Original Message ----- 
From: "helcio" <helcio em totaldata.com.br>
To: "Cascavel Perl Mongers" <cascavel-pm em mail.pm.org>
Sent: Monday, August 18, 2003 2:34 PM
Subject: [Cascavel-pm] Perl + Postgres


> Boa tarde lista,
>
> estou tentando me conectar a um banco de dados Postgres e não estou tendo
> sucesso.
> Instalei o DBD pgsql do CPAN, e nos exemplos que acompanham o pacote, ele
> mostra várias sintaxes para fazer a conexão, só que nenhuma delas
funcionou.
>
> Existe um padrão? Depende do DBD que baixei?
>
> Obrigado,
> Hélcio Baurich
> TotalData
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em mail.pm.org
> http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>




Mais detalhes sobre a lista de discussão Cascavel-pm